vue中实现文字超过2行... 展开-收起(兼容ie)

  1. 先看看实际效果
    vue中实现文字超过2行... 展开-收起(兼容ie)_第1张图片
    2.需求一步一步分析
    当文字超出省略号 就想到css样式实现(ie不兼容
      overflow: hidden; 
      text-overflow: ellipsis;
      display: -webkit-box;
      -webkit-box-orient: vertical;
      -webkit-line-clamp: 2; 

3.由于自己也是一个懒人、就想在网上找找、看了几篇文章都是根据width、height来计算的 看了一下写的比较复杂、都只是针对单个文本来的、现实中一般都是列表展示数据的
代码如下:复制代码即可运行、兼容ie





  
  
  Vue 中文字超过2行显示省略号 展开-收起
  



  
占位
{{item.desc}}

展开

收起

  1. 分析代码
    • 省略号通过:after伪类实现
    • 文字一行高度、在浏览器中展示都有所区别、所以在这里我在页面放置了一段占位文本设置了隐藏占位
    • 通过获取占位文本的高度 * 2 计算出2行文本内容 动态改变status状态 null-无展开收起 true-展开 false-收起 结合max-height实现
    • 注意⚠️ 解析完数据 由于dom没加载完 ref获取不到需要在 **this. n e x t T i c k ∗ ∗ 中 获 取 r e f 值 此 时 d o m 加 载 完 或 者 使 用 s e t T i m e o u t ( f n , 0 ) 延 时 解 决 t h i s . nextTick**中获取ref值 此时dom加载完 或者使用setTimeout(fn,0)延时解决 this. nextTickrefdom使setTimeout(fn,0)this.set用法自行了解

5.完结 (不明白可以提问交流、谢谢)

你可能感兴趣的:(vue,通用)