平时用的较多的事单行文本溢出显示省略号,做微信端发现移动端不少效果都是多行文本溢出显示省略号,故而总结一下,方便今后使用。
单行文本的溢出
overflow: hidden; text-overflow:ellipsis; white-space: nowrap;
效果:
0.png
多行文本的溢出
display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3;/*行数*/overflow: hidden; text-overflow: ellipsis;
效果:
111.png
适用范围:
因使用了WebKit的CSS扩展属性,该方法适用于WebKit浏览器及移动端;
注:
-webkit-line-clamp用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他的WebKit属性。常见结合属性:
display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。
另外还有一些解决方法:
利用伪类:after
利用绝对定位和padding;(跨浏览器解决方案)(跟第一种用伪类的方案类似)
利用js插件来实现该功能,如Clamp.js,jQuery.dotdotdot
利用伪类:after
<div id="con"> <span id="txt">文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略</span> <span class="t"></span> </div> <style> #txt{ display: inline-block; height: 40px; width: 250px; line-height: 20px; overflow: hidden; font-size: 16px; } .t:after{ display: inline; content: "..."; font-size: 16px; } </style>
效果:
2.png
注:
该方法适用范围广,但文字未超出行的情况下也会出现省略号,可结合js优化该方法。
该方法改良版:
<head> <meta charset="UTF-8"> <title>test</title> <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"></script> <style> #txt{ display: inline-block; height: 40px; width: 15em; line-height: 20px; overflow: hidden; font-size: 16px; border: 1px solid #f00; position: relative; } #txt:after{ display: block; content: "..."; font-size: inherit; width: 2em; position: absolute; bottom: 0; right: 0; background: #fff; } </style> <body> <span id="txt">简书是一个优质的创作社区,在这里,你可以任性地创作,一篇短文、一张照片、一首诗、一幅画……我们相信,每个人都是生活中的艺术家,有着无穷的创造力。</span> </body> </html>
效果图:
111.png
注:当文字不满2行时,省略号和文本最后一个字有空白区,还是加js判断才能完美达到效果。
利用绝对定位和padding;(跨浏览器解决方案)
<p id="con2"> 文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略号,文本溢出显示省略<span class="t2">...</span> </p> <style> #con2{ position: relative; height: 40px; width: 250px; line-height: 20px; overflow: hidden; padding-right: 12px; } .t2{ position: absolute; right: 0; bottom: 0; } </style>
效果:
3.png
参考:
作者:恬雅过客
链接:https://www.jianshu.com/p/8ee202c7ff42