word-break 和 overflow-wrap 触发条件不同:前者暴力拆词,后者礼貌换行;中文场景推荐 overflow-wrap: break-word + word-break: keep-all。
两者常被混用,但实际行为差异很大:word-break 是“暴力拆词”,只要容器不够宽就直接在任意字母/汉字间切断;overflow-wrap(旧名 word-wrap)是“礼貌换行”,只在实在没别的办法时才拆长单词,优先保持单词完整。
中文没有空格分隔,word-break: break-all 会让所有文字像英文一样被逐字切断,比如“人工智能”可能变成“人工智…”,阅读体验极差。它真正适合的场景其实很窄:
abc123def456),必须塞进窄列white-space: nowrap 做单行截断时作为兜底(但此时更推荐 text-overflow: ellipsis)它只在整词超长且无法用空格换行时才介入,对中文、英文都友好。注意它的生效前提是父容器有明确宽度限制(比如 max-width: 300px),否则无从判断“是否溢出”。
div {
width: 200px;
overflow-wrap: break-word;
/* 等价写法(兼容老浏览器) */
word-wrap: break-word;
}常见误配:overflow-wrap: anywhere 虽然也允许断词,但它比 break-word 更激进——即使单词后面有空格,也会主动在词内断开,目前仅建议用于排版控制极强的场景(如 PDF 导出样式),日常 Web 不推荐。
无论用哪个属性,以下问题最常导致“写了也不管用”:
white-space 被设为 nowrap 或 pre,直接禁用了换行逻辑width / max-width,CSS 无法计算“是否溢出” (不换行空格)或 (窄空格),它们会阻止断行点生成中文长段落换行最稳的组合其实是:overflow-wrap: break-word + word-break: keep-all(后者禁止中文内断,让前者专注处理超长英文/URL)——这点容易被忽略,但恰恰是移动端阅读体验的关键。