点击上方“前端公虾米”,选择“置顶或者星标”
你的关注意义重大!
前言
在我们的日常开发工作中,文本溢出截断省略是很常见的一种需考虑的业务场景细节。看上去 “稀松平常” ,但在实现上却有不同的区分,是单行截断还是多行截断?多行的截断判断是基于行数还是基于高度?这些问题之下,都有哪些实现方案?他们之间的差异性和场景适应性又是如何?凡事就怕较真,较真必有成长。本文试图通过编码实践,给出一些答案。
先来点基础的,单行文本溢出省略
核心 CSS 语句
overflow: hidden;(文字长度超出限定宽度,则隐藏超出的内容)
white-space: nowrap;(设置文字在一行显示,不能换行)
text-overflow: ellipsis;(规定当文本溢出时,显示省略符号来代表被修剪的文本)
优点
无兼容问题
响应式截断
文本溢出范围才显示省略号,否则不显示省略号
省略号位置显示刚好
短板
只支持单行文本截断
适用场景
适用于单行文本溢出显示省略号的情况
Demo
示例图片
![loading.gif](https://i-blog.csdnimg.cn/blog_migrate/0a0b243c837b0e75e9dd332ba399c771.gif)
进阶一下,多行文本溢出省略(按行数)
○ 纯 CSS 实现方案
核心 CSS 语句
-webkit-line-clamp: 2;(用来限制在一个块元素显示的文本的行数,2 表示最多显示 2 行。为了实现该效果,它需要组合其他的 WebKit 属性)
display: -webkit-box;(和 1 结合使用,将对象作为弹性伸缩盒子模型显示 )
-webkit-box-orient: vertical;(和 1 结合使用 ,设置或检索伸缩盒对象的子元素的排列方式 )
overflow: hidden;(文本溢出限定的宽度就隐藏内容)
text-overflow: ellipsis;(多行文本的情况下,用省略号 “…” 隐藏溢出范围的文本)
优点
响应式截断
文本溢出范围才显示省略号,否则不显示省略号
省略号显示位置刚好
短板
兼容性一般:-webkit-line-clamp 属性只有 WebKit 内核的浏览器才支持
![loading.gif](https://i-blog.csdnimg.cn/blog_migrate/0a0b243c837b0e75e9dd332ba399c771.gif)
适用场景
多适用于移动端页面,因为移动设备浏览器更多是基于 WebKit 内核