element select多选框内及下拉文字过多溢出问题

 
<el-select
            v-model="form.name"
            placeholder="请选择问题类别"
            multiple
            collapse-tags
            style="width: 500px"
            clearable
            class="tags_select_input"
          >
            <el-option
              :label="item.name"
              :value="item.id"
              v-for="(item, index) of names"
              :key="index"
            >  
           <!-- 单行文字溢出显示省略号 -->
           <div style="width:300px;overflow:hidden;text-overflow: ellipsis;display:inline-block">{{item.name}}</div>
           <!-- 当下拉多选时如果不加上display:inline-block,选中当前下拉时后面选中那个“√”将无法显示 -->
           <!-- 单行情况下如果文字换行显示,并未隐藏,需加上:white-space: nowrap; -->
          <!-- 多行行文字溢出显示省略号需加上:display: -webkit-box; -webkit-box-orient: vertical;-webkit-line-clamp: 4; -->

          <!-- 溢出文字隐藏后将无法查看文本全部内容,此时可以使用el-tooltip组件 -->
          <!-- 还有个问题就是虽然这溢出的文本隐藏了,并且现在鼠标指上去也能看见全部内容了,但是现在就算鼠标指到“未溢出的文本”也会有这个效果(这不是我想要的效果),所以加了个v-if来控制 -->
          <!-- v-if的长度空根据下拉框的宽度来进行调整 -->
          <el-tooltip class="item" effect="dark" :content="item.name" placement="top-start" v-if="item.name.length >= 10">
            <div style="width:100%;overflow:hidden;text-overflow: ellipsis;display:inline-block">{{item.name}}</div>
          </el-tooltip>
        </el-option>
</el-select>

//选中下拉之后select中文字溢出问题
.tags_select_input /deep/ .el-select__tags {
  // height: 40px;
  white-space: nowrap;
  overflow: hidden;
  flex-wrap: nowrap;
}
.tags_select_input /deep/ .el-select__tags-text {
  display: inline-block;
  max-width: 300px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tags_select_input /deep/ .el-tag__close.el-icon-close {
  top: -6px;
  right: -4px;
}

如果在el-tag中使用文字溢出隐藏实例:
<el-tag
              :style="{margin:tag.name.length >= 50?'3px 5px' : '4px 5px'}"
              v-for="tag in scope.row.projects"
              :key="tag.id"
              @close="delTag(tag,scope.row.accontId)"
              closable>
              <el-tooltip class="item" effect="dark" :content="tag.name" placement="top-start" v-if="tag.name.length >= 50">
                <div style="width:880px;overflow:hidden;text-overflow: ellipsis;display:inline-block;height:20px">{{tag.name}}</div>
              </el-tooltip>
              <span v-else>{{tag.name}}</span>
</el-tag>

其中样式调整主要设置了div高度和动态绑定了style

 

 

posted @ 2021-09-05 20:45  保洁叔叔  阅读(5602)  评论(0编辑  收藏  举报