text-overflow: ellipsis 需配合 width/max-width、white-space: nowrap 和 overflow: hidden 三者缺一不可;单行省略适用标题等场景,多行省略可用 -webkit-line-clamp 实现。

文字过长撑开容器、破坏布局,是 前端 常见问题。用 text-overflow: ellipsis 配合必要样式,就能优雅截断并显示省略号,但必须满足几个前提条件,否则无效。
基础写法:三步缺一不可
仅写 text-overflow: ellipsis 是没用的,它必须和另外两个声明一起用:
- width 或 max-width:容器得有明确宽度(百分比、px、rem 都行)
- white-space: nowrap:强制单行不换行,否则文字会折行,省略号不会触发
- overflow: hidden:隐藏溢出部分,省略号才“有地方显示”
单行省略:最常用场景
适用于标题、标签、列表项等需要严格单行展示的地方:
.title {width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
注意:如果父容器是 flex 或 grid 布局,默认可能不收缩,记得给该元素加 flex-shrink: 0 或设置 min-width: 0 防止 flex 项强行撑宽。
立即学习 “ 前端免费学习笔记(深入)”;
多行省略:css 原生支持有限,需技巧
CSS 没有直接的 line-clamp 多行省略属性(除了 WebKit 内核的 -webkit-line-clamp),但现代 浏览器 已普遍支持:
.desc {display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; /* 显示 2 行 */ overflow: hidden; line-height: 1.5; height: 3em; /* 2 行 × 行高,辅助保险 */}
⚠️ 注意:-webkit-line-clamp 是非标准属性,但兼容性足够好(chrome、safari、edge、firefox 73+ 都支持)。若需极致兼容,可用 js 方案或 伪元素 模拟,但日常项目中这个写法够用。
其他实用细节
省略号不是万能的,有些情况要小心处理:
- 中文标点(如句号、逗号)可能被截在末尾,视觉上不自然——可配合
word-break: keep-all或overflow-wrap: break-word微调断行逻辑 - 省略号颜色默认跟随文字色,无需额外设置;如需自定义(比如灰色省略号),目前只能靠 JS 插入或 伪元素 模拟
- 按钮内文字过长?优先考虑响应式缩放字体(
clamp())或改用 tooltip 提示全文,别硬截
基本上就这些。核心就三点:定宽、单行、隐藏溢出。记牢条件,再复杂的布局也能稳住文字边界。
以上就是