CSS妙用,el-table中字段长度显示过长怎么办

  el-table中有些字段的长度太长,例如描述,备注等字段,一旦字数超过了列头宽度的限制,就会被挤下另一行,导致table的每一行的高度不一致,看起来很不美观

  查阅官方手册,其实是有提供一个 show-overflow-tooltip 属性的。使用了此属性的情况下,能够实现当内容过长隐藏并显示 tooltip,显示效果如下

   其实挺好看的,但是还是有点美中不足,鼠标不能移入tooltip进行复制,查看过官方手册中tooltip的属性,原本组件是支持的,但是写进el-table的时候不知官方处于什么考虑,将enterable默认设置为了false。

   没有选择的余地,业务需求又需要,于是也就只能自己重新仿造写一个了。

<el-table>
    <el-table-column
           label="备注">
           <template slot-scope="scope">
                  <div v-if='scope.row.XXXX && (scope.row.XXXX.length>16)'>
                      <el-popover title="详细" trigger="hover" placement="top" width="200">
                           <p>{{ scope.row.XXXX }}</p>
                          <div slot="reference">
                               <p size="medium">{{ scope.row.XXXX | XXXX}}</p>
                           </div>
                       </el-popover>
                   </div>
                   <div v-else>
                       <span>{{ scope.row.XXXX}}</span>
                  </div>
             </template>
      </el-table-column>
</el-table>

  这里用了el-popover,其实和el-tooltip挺像的,基本用法也差不多。想限制的字体长度自己决定,再搭配上一个过滤器。

filters:{
        XXXX(value){
            if(!value){
                return
            }else{
                if(value.length>16){
                    var target=value.substr(0,16)+'....'
                }else{
                    target=value
                }
                return target;
            }
        },
    }

  然后,看图

  大致就这样了,但是又觉得不完美,首先,不能自适应屏幕宽度,js中的字体长度限制的不好还是会出现换行的情况,于是,就又升级了一版

<el-table>
   <el-table-column
        label="备注">
        <template slot-scope="scope"> 
                  <el-popover title="详细" trigger="hover" placement="top" width="200">
                      <p>{{ scope.row.XXXX }}</p>
                      <div slot="reference">
                      <p size="medium" style="white-space: nowrap;overflow: hidden;text-overflow:ellipsis;">{{ scope.row.XXXX}}</p>
                  </div>
              </el-popover>        
        </template>
   </el-table-column>
</el-table>

  看出了主要差别了么,主要就是那3句css,总结下来就是不换行,超过宽度部分隐藏,文字超过宽度显示省略符号来代表被修剪的文本,代码却少了好多

  果然还是老话说的好,能css解决的,就不要js解决。

posted @ 2020-09-21 16:39  他好像一条狗啊  阅读(6267)  评论(0编辑  收藏  举报