美文网首页
纯 CSS 实现多行文字截断

纯 CSS 实现多行文字截断

作者: 壹点微尘 | 来源:发表于2018-03-12 09:18 被阅读191次

    单行文本截断 text-overflow

    文本溢出我们经常用到的应该就是 text-overflow: ellipsis 了,相信大家也很熟悉,只需轻松几行代码就可以实现单行文本截断。

    div {
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }
    

    属性浏览器原生支持,各大浏览器兼容性好,缺点就是只支持单行文本截断,并不支持多行文本截取。

    适用场景:单行文字截断最简单实现,效果最好,放心使用。

    如果是多行文字截取效果,实现起来就没有那么轻松。

    -webkit-line-clamp 实现

    先介绍第一种方式,就是通过 -webkit-line-clamp 属性实现。具体的方式如下:

    div {
      display: -webkit-box;
      overflow: hidden;
      -webkit-line-clamp: 2;
      -webkit-box-orient: vertical;
    }
    

    它需要和 display、-webkit-box-orient 和 overflow 结合使用:

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

    从效果上来看,它的优点有:

    • 响应式截断,根据不同宽度做出调整
    • 文本超出范围才显示省略号,否则不显示省略号
    • 浏览器原生实现,所以省略号位置显示刚好

    但是缺点也是很直接,因为 -webkit-line-clamp 是一个不规范的属性,它没有出现在 CSS 规范草案中。也就是说只有 webkit 内核的浏览器才支持这个属性,像 Firefox, IE 浏览器统统都不支持这个属性,浏览器兼容性不好。

    使用场景:多用于移动端页面,因为移动设备浏览器更多是基于 webkit 内核,除了兼容性不好,实现截断的效果不错。

    原文地址 (还有另外两种实现方式)

    相关文章

      网友评论

          本文标题:纯 CSS 实现多行文字截断

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