一、单行文本多出一定宽度后隐藏并用省略号...表示(这个是比较容易且大众都会的)
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~~~
网友评论