CSS 文本空白和换行处理 | 青训营笔记

368 阅读2分钟

这是我参与「 第四届青训营 」笔记创作活动的第一天

CSS 空白处理

<div class="box"> 11 22 33 44
    55 66
    77
 </div>

现有一段文本如上面所示,若不添加任何 CSS 处理,则在浏览器渲染出来为:

image.png

可见,对应的额外空格与换行符都在浏览器渲染时被忽略。

这篇文章主要介绍在不使用 &nbsp;<br> 的情况下,如何利用 CSS 处理文本的空白与换行。

标签中有多个空格和换行问题

white-space 属性

决定浏览器如何处理空白和换行符

属性值作用是否正常换行是否合并连续空白符换行符是否有效
normal默认值,正常换行,空白和换行符会被浏览器忽略(多个连续空格只显示一个)
pre不会自动换行,除非遇到换行符或者br标签(多个连续空白显示多个)
nowrap不换行
忽略换行符,直到遇到br标签为止
pre-wrap正常换行
连续的空白会被保留
换行符有效
pre-line正常换行
连续空白符会被合并成一个
换行符也有效

image.png image.png image.png

image.png image.png

word-break 属性

决定文本内容超出容器时,浏览器是否自动插入换行符

属性值作用
normal默认换行规则,连续字符不换行,直接溢出父元素
break-all强制在父元素边缘位置截断(单词可能被从中间劈开),连续的标点符号不会换行
keep-all与 normal 相同
* break-word不是个规范属性(部分浏览器支持),效果同 word-wrap:break-word;

image.png

word-wrap 属性

决定浏览器是否应该在一个无法正常断开的单词内部插入换行符

属性值作用
normal换行只发生在单词见的空格等地方(不会截断单词,过长的单词容易溢出父元素)
break-word如果没有合适的截断点,可能在任意位置截断单词(先尝试正常换行,若换行后还是很长,就在任意位置截断【连续的标点符号也会截断】)

image.png

注意

  • white-spacenowrap或者pre使,word-breakword-wrap都会失效
  • 对于表格的长文本来说,使用word-break或者word-wrap来强制换行需要设置table-layout:fixed