专栏名称: Lindz
前端工程师
目录
相关文章推荐
前端早读课  ·  【第3530期】像高手一样调试程序 ·  昨天  
前端大全  ·  GitHub 第 10 ... ·  2 天前  
前端大全  ·  Tauri vs. ... ·  2 天前  
国家林业和草原局  ·  飞越四大沙地 | 科技赋能 ... ·  昨天  
国家林业和草原局  ·  飞越四大沙地 | 科技赋能 ... ·  昨天  
共产党员  ·  黄宗德:英雄无悔 许党报国 ·  2 天前  
共产党员  ·  黄宗德:英雄无悔 许党报国 ·  2 天前  
51好读  ›  专栏  ›  Lindz

纯 CSS 实现多行文字截断

Lindz  · 掘金  · 前端  · 2018-03-09 02:42

正文

请到「今天看啥」查看全文


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

-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; 可选属性,可以用来多行文本的情况下,用省略号“…”隐藏超出范围的文本。

实现效果: demo 地址

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

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

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

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

定位元素实现多行文本截断

另外还有一种靠谱简单的做法就是设置相对定位的容器高度,用包含省略号(…)的元素模拟实现,实现方式如下:







请到「今天看啥」查看全文