一:单行文本显示不完时,我们只需要设置单行文本的宽度,不允许换行,溢出隐藏及换行省略四个属性即可:
p{
max-width: 100px;
overflow:hidden;
text-overflow:ellipsis;
/*禁止换行显示*/
white-space:nowrap;
background-color:#ffe51a;
}
<p>哈哈哈哈哈哈哈,哈哈哈哈哈,哈哈哈哈哈哈哈</p>
二:当我们想要设置多行文本显示不完省略号时:
p {
width: 100px;
overflow:hidden;
text-overflow:ellipsis;
display:-webkit-box;
/*控制在3行*/
-webkit-line-clamp:3;
-webkit-box-orient:vertical;
background-color:#ffe51a;
}
-webkit-line-clamp 其实是一个不规范属性,使用了WebKit的CSS扩展属性,该方法适用于WebKit浏览器及移动端;
它用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他外来的WebKit属性。
display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。
text-overflow,可以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本 。
三:使用伪元素:after实现句尾省略号效果,但是这种办法未超出部分也会显示省略号,可以使用js控制进行兼容
p{
position: relative;
max-width: 100px;
line-height: 20px;
max-height: 40px;
overflow: hidden;
}
p::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%);
}
说明:
1.将height设置为line-height的整数倍,防止超出的文字露出。
2.给p::after添加渐变背景可避免文字只显示一半。
3.由于ie6-7不显示content内容,所以要添加标签兼容ie6-7(如:<span>…<span/>);兼容ie8需要将::after替换成:after。
四:简单粗暴的方法,使用js截取固定的要显示字符的个数,判断字符的长度是否大于要显示的字数,大于则截取并加上省略号,否则全部显示
<p><script>document.write("哈哈哈哈哈哈哈,哈哈哈哈哈,哈哈哈哈哈哈哈".substring(0,10)+"...")</script></p>
最多显示十个字符,这样省略号不一定是在行尾,不推荐。
原文作者技术博客:https://www.jianshu.com/u/ac4daaeecdfe
95后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流。