单行文本溢出用white-space:nowrap、overflow:hidden和text-overflow:ellipsis实现;多行则通过display:-webkit-box、-webkit-line-clamp和-webkit-box-orient:vertical完成,需限定宽度。
当文本内容超出容器宽度时,用省略号(…)表示溢出是常见的ui需求。css提供了几种标准方法来实现单行或多行文本的溢出隐藏并显示省略号。
单行文本溢出省略号
适用于只显示一行文本,超出部分隐藏并以省略号结尾。
关键属性:
- overflow: hidden:隐藏溢出内容
- white-space: nowrap:强制文本不换行
- text-overflow: ellipsis:溢出时显示省略号
示例代码:
.single-line { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; width: 200px; /* 需指定宽度 */ border: 1px solid #ccc; }
多行文本溢出省略号
用于限制显示2行或更多行文本,超出部分用省略号表示。标准做法依赖 -webkit-line-clamp,目前在主流浏览器中广泛支持。
立即学习“前端免费学习笔记(深入)”;
关键属性:
- display: -webkit-box:启用弹性盒子模型(WebKit私有)
- -webkit-line-clamp:限制行数
- -webkit-box-orient: vertical:设置子元素垂直排列
- overflow: hidden:配合实现截断效果
示例代码(限制2行):
.multi-line { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; width: 200px; line-height: 1.4; border: 1px solid #ddd; }
注意事项与兼容性
虽然上述方法在现代浏览器中表现良好,但仍需注意以下几点:
- 必须限定容器宽度或最大宽度,否则无法触发溢出
- 多行省略仅在块级元素上有效
- -webkit-line-clamp 是非标准属性,但在 chrome、safari、firefox(新版)和 edge 中均可用
- 若需兼容老版本IE,建议使用js方案或截取文字长度
基本上就这些。掌握这几个核心样式组合,就能应对大多数文本截断场景。