美文网首页
单行、多行溢出用省略号...表示(踩坑~)

单行、多行溢出用省略号...表示(踩坑~)

作者: 努力study代码的小哪吒 | 来源:发表于2020-05-15 15:43 被阅读0次
一、单行文本多出一定宽度后隐藏并用省略号...表示(这个是比较容易且大众都会的)
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
二、多行文本

百度上面有很多的方法,我也查到了几种,所以我们先来给他罗列一下:
1.用伪类:after

content: "..."; 
position: absolute; 
bottom: 0; 
right: 0; 
padding-left: 40px;
background: -webkit-linear-gradient(left, transparent, #fff 55%);
background: -o-linear-gradient(right, transparent, #fff 55%);
background: -moz-linear-gradient(right, transparent, #fff 55%);
background: linear-gradient(to right, transparent, #fff 55%);
效果图

但是这个也有问题,这样写的话,有没有超出都会显示出...,用js去控制的话,也不是很方便,因为我们是多行,而不是多少个字,所以~~~~略略略,不满足喽

2.在WebKit浏览器或移动端(绝大部分是WebKit内核的浏览器)的页面实现比较简单,可以直接使用WebKit的CSS扩展属性(WebKit是私有属性)-webkit-line-clamp ;注意:这是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中。
-webkit-line-clamp :用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他的WebKit属性。查看 text-overflow

display: -webkit-box 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示
-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式
text-overflow: ellipsis; 可以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本

overflow : hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;

问题来了,这样写我们正常实现了超出部分隐藏,但是并没有显示...,所以还是有问题的,那我们解决方法呢,

  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  /*! autoprefixer: off */
  -webkit-box-orient: vertical;
  /* autoprefixer: on */
  -webkit-line-clamp: 3;

就是加了两句注释,就是autoprefixer,其实是我们使用webpack等一些打包工具,会把我们前缀属性忽略掉,所以就需要在样式前后添加注释(后处理程序),再次运行,就发现...属性生效了。但是有的在打包时,还会我一行警告

  Emitted value instead of an instance of Error) autoprefixer: \static\css\reset\index.css:99:3: Second Autoprefixer control comment was ignored. Autoprefixer applies control comment to whole block, not to next rules.

这个时候,也是非常不爽的,正如警告中所说,以上的css处理语句控制的应该是整个css块,而不是在此之后的css。再次修改为以下:

/*! autoprefixer: ignore next */
-webkit-box-orient: vertical;

运行OK~~~

相关文章

网友评论

      本文标题:单行、多行溢出用省略号...表示(踩坑~)

      本文链接:https://www.haomeiwen.com/subject/anmcohtx.html