zoukankan      html  css  js  c++  java
  • 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解决。

  • 相关阅读:
    单元测试小示例
    分布式版本控制系统Git的安装与使用
    第一次作业:准备
    结对项目四则运算 “软件”之升级版
    个人项目 — 小学四则运算 “软件”之初版
    生命力
    .net 的前景
    力求简洁,应对变化
    现代软件工程 第一章 【概论】练习与讨论 第6题 邓杰
    现代软件工程 第一章 【概论】练习与讨论 第2题 邓杰
  • 原文地址:https://www.cnblogs.com/jdWu-d/p/13692510.html
Copyright © 2011-2022 走看看