跳到主要内容

空白与文本换行

长念
长念阅读约 2 分钟3 年前发布

white-space

这个属性是用来设置如何处理元素中空白字符的:

  • 空白字符是否合并,如何合并。
  • 是否换行,如何换行

文字换行:指的是文本超出容器的默认自动换行。

定义
  • 空白字符 (spaces): 只包括 空格、制表符、换行符
  • 其他空白分隔符 (other space separators): 空白字符以外的其他空白字符,如全角空格、零宽空格等
属性值作用换行符空格/制表符文字换行行尾空格行尾其他空白分隔符
normal合并连续空白符,换行符会被当作空白符处理。根据填充行框盒子的需要来换行合并合并换行删除挂起
nowrap合并连续空白符,阻止文本换行。合并合并不换行删除挂起
pre保留连续空白符,仅在遇到换行符或 <br> 元素时才会换行。保留保留不换行保留不换行
pre-wrap保留连续空白符,遇到换行符或 <br> 元素时换行,或根据填充行框盒子的需要换行保留保留换行挂起挂起
pre-line合并连续空白符,遇到换行符或 <br> 元素时换行,或根据填充行框盒子的需要换行。保留合并换行删除挂起
break-spaces
保留保留换行换行换行
注意

<br /> 元素始终都会导致换行。

word-break

这个属性指定了在一个单词的内部如何换行。

属性值作用
normal完整单词不会被折断,尽可能地独占一行;CJK (中日韩) 文字折行
break-all完整的单词会被折断换行;CJK 文字折行
keep-all完整的单词不会换行,即使超出容器;CJK 文字也不折行
break-word已废弃 效果是 word-break: normaloverflow-wrap: anywhere 的合,忽略 overflow-wrap 的值

overflow-wrap

这个属性也是控制单词如何被拆分换行的,实际上是作为 word-break 的互补。与 word-break 相比,overflow-wrap 仅在无法将整个单词放在自己的行而不会溢出的情况下才会换行。

属性值作用
normal行只能在正常的单词断点(例如两个单词之间的空格)处换行。
anuwhere为防止溢出,如果行中没有其他可接受的断点,则不可断的字符串(如长词或 URL)可能会在任何时候换行。在断点处不会插入连字符。在计算最小内容内在大小时,会考虑由单词换行引入的软换行机会。
break-word
与 anywhere 值相同,如果行中没有其他可接受的断点,则允许在任意点将通常不可断的单词换行,但在计算最小内容内在大小时不考虑断字引入的软换行机会。
提示

这个属性原本属于微软扩展的一个非标准、无前缀的属性,叫做 word-wrap,后来在大多数浏览器中以相同的名称实现。目前它已被更名为 overflow-wrapword-wrap 相当于其别称。