Prety F2E

We tell browsers how to do better

0%

CSS 实现多行文本溢出显示省略号的方法

CSS3 之后,大多数浏览器已经支持 text-overflow:ellipsis,这个属性可以用来实现单行文本溢出显示省略号 ,但是它并不支持多行文本溢出显示省略号。

移动端web开发比较简单,绝大部分浏览器都是 Webkit 内核,可以直接使用 Webkit 的私有属性 -webkit-line-clamp;注意,这是一个不规范的属性。

-webkit-line-clamp 用来限制在一个块元素显示的文本的行数。为了实现该效果,它需要组合其他的 Webkit 属性。

  1. display: -webkit-box 必须结合的属性,将对象作为弹性伸缩盒子模型显示
  2. -webkit-box-orient 必须结合的属性,设置或检索伸缩盒对象的子元素的排列方式(从上到下排列子元素的值都可以,vertical 或 block-axis)
  3. text-overflow: ellipsis 可以用来多行文本的情况下,用省略号 隐藏超出范围的文本。(最新版浏览器不用这个也可以显示省略号)
  4. overflow: hidden 这个也是必须的

在实现多行文本溢出显示省略号的效果之后,发现一个问题,当省略号处刚好是 a 链接时(a 标签没有 href 属性时不存在问题),省略号显示异常,目测是 Webkit 的一个 bug,解决方法是 a 标签中的文字外面包一个其他标签(比如 span,符合嵌套规范的其他标签也可以),就可以绕过去了。