前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库单行文本省略号 text-overflow 属性
CSS盒模型与排版

单行文本超出显示省略号要写哪几行 CSS,少一行为什么就不行?

三行固定搭配:white-space: nowrap 不让换行,overflow: hidden 裁掉溢出,text-overflow: ellipsis 在裁剪处画省略号。前提是元素是块级且宽度受限,否则文字没有「溢出」可言。

前端进阶之旅 · 一题精讲更新于 2026.09.29
CSS#盒模型与排版#容器化
先看核心答案读代码示例
理解线索

三个属性各管一段

  1. white-space: nowrap强制一行,文字才会横向超出容器;少了它文字会换行,没有溢出
  2. overflow: hiddentext-overflow 只在溢出被裁剪时生效,visible 下文字直接露出去
  3. text-overflow: ellipsis把被裁掉的那一截换成省略号,本身不会让文字溢出

宽度才是最常被忽略的第四个条件。display: inline 的 span 没有宽度,flex 子项默认 min-width: auto 不肯缩小,这两种情况三行都写了也不出省略号。

核心回答

先记住这个答案

需要三行:white-space: nowrap 让文字不换行,这样才会横向溢出;overflow: hidden 把溢出部分裁掉;text-overflow: ellipsis 在裁剪的位置显示省略号。另外还有一个隐含条件,元素必须是块级或 inline-block,并且宽度是确定的,比如写死的 width、max-width,或者被父容器限制住。三行各管一段,少哪一行都不会出省略号。

  • 单行省略需不换行、裁剪和标记
  • 文本盒还需要受约束宽度
  • flex 子项要加 min-width: 0 才能收缩
  • text-overflow 写在溢出的那个容器上,不继承

标准写法

这是业务里最常见的列表标题省略。

单行省略的完整写法CSS
.title {
  width: 200px; /* 或 max-width,或由父容器限制,宽度必须有上限 */
  white-space: nowrap; /* 1. 不换行,文字才会超出 200px */
  overflow: hidden; /* 2. 裁掉超出部分 */
  text-overflow: ellipsis; /* 3. 在裁剪处画省略号 */
}
/* 效果:一段很长很长的标题文… */

很多团队会把这几行封装成一个工具类,Tailwind 里对应的就是 truncate。另外建议给元素加上 title 属性,鼠标悬停时能看到完整文字。

每一行去掉会怎样

理解这三行最直接的办法,是挨个去掉看效果。

去掉 white-space: nowrap,文字会正常换行,200px 宽装不下就往下折,高度变高,横向从来没超出过,也就没有需要省略的地方。

去掉 overflow: hidden,文字确实超出了 200px,但默认 overflow: visible 会让它直接画到盒子外面。规范规定 text-overflow 只在内容被裁剪时起作用,所以不会出现省略号。

去掉 text-overflow: ellipsis,文字超出后被硬生生切掉,末尾可能只剩半个字,看不出后面还有内容。

写全了还不生效的几种情况

线上遇到最多的,其实是三行都写了却没有省略号,原因几乎都出在宽度上。

flex 子项默认不肯缩小
在 flex 布局里,左边头像、右边标题这种结构,给标题写了三行,结果标题把整行撑宽,省略号不出现。原因是 flex 子项默认 min-width: auto,最小宽度等于内容宽度,一行不换的长文字就是它的最小宽度,所以它不会收缩。给标题加 min-width: 0,或者 flex: 1 配 min-width: 0,就能正常收缩出省略号。grid 子项也是同样的道理。
行内元素没有宽度
span、a 默认是 display: inline,width 对它们无效,overflow 也不起作用。要改成 display: block 或 inline-block 才行。
写在了外层而不是溢出的那层
text-overflow 不继承,要写在真正发生溢出、同时设置了 overflow: hidden 的那个元素上。写在外层容器上,里面的子元素照样被硬切。
回答前,多想一步

容易答错的地方

以为 text-overflow: ellipsis 一行就能搞定
text-overflow 本身只负责「怎么显示被裁掉的部分」,它既不会阻止换行,也不会裁剪。必须由 nowrap 制造溢出,hidden 完成裁剪,它才有东西可处理。
以为 overflow: hidden 可以换成别的值
overflow: auto 或 scroll 也算裁剪,省略号能显示,但会多出滚动条。overflow: clip 同样可以。一般还是用 hidden,面试时说清楚要求是「非 visible」更准确。
试着用自己的话回答

面试官还会怎么问?

多行省略怎么写?

用 display: -webkit-box、-webkit-box-orient: vertical、-webkit-line-clamp: 2 再加 overflow: hidden。虽然带 -webkit- 前缀,但主流浏览器都支持,是目前最常用的方案。不需要 white-space: nowrap,因为多行本来就要换行。

省略号能放在开头,显示文件名的结尾吗?

text-overflow 的省略号出现在行的结束方向。把元素设为 direction: rtl,省略号就会跑到左边,保留结尾,适合显示长路径。但这会影响标点和英文的显示顺序,更稳妥的做法是用 JavaScript 截断,或者把文件名和扩展名拆成两个元素。

怎么判断文字是否真的被省略了,好决定要不要显示 Tooltip?

比较元素的 scrollWidth 和 clientWidth,scrollWidth 大于 clientWidth 说明内容溢出,出现了省略号。antd 的 Typography 组件的 ellipsis 配置就是基于类似的检测来决定是否显示提示。

从一道题,走向一组知识

把知识连起来

盒模型与排版

表格单元格里的长文本,为什么加了 text-overflow 还是不出省略号?

表格单元格宽度由表格算法决定,同样三行 CSS 在 td 里不生效,要配合 table-layout: fixed。

盒模型与排版

图片放进 div 里,底下为什么总多出几像素空白?

inline-block 加 overflow: hidden 后基线会移到底边,省略号元素和旁边文字对不齐时要用 vertical-align 修。

参考资料

  • CSS:盒模型与排版参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 标准写法
  3. 每一行去掉会怎样
  4. 写全了还不生效的几种情况
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑