大多数标签在展示文本内容的时候都会默认把文本中的空白和换行符去掉,这的确大大的使得文本的排版更加美观了,也怎加了区域的利用率,可是就有一些需求是需要原原本本的展示出原汁原味的文本格式。那该如何展示出文本的内在格式呢?无外乎把不该去掉的空格展示出来,把不该合并的换行让它换行起来。
值 | 描述 | 换行符 | 空格和制表符 | 文字换行 | 行尾空格 |
normal | 默认。空白会被浏览器忽略。连续的空白符会被合并,换行符会被当作空白符来处理。换行在填充时是必要。也就是说不管是文本中是否有空白符和换行符都会被省略。并且遇到父容器需要换行填充的时候也会自动换行。大多数的标签white-space都是normal 。 | 合并 | 合并 | 换行 | 删除 |
nowrap | 文本不会换行,文本会在在同一行上继续,直到遇到<br>标签为止。和 normal 一样,连续的空白符会被合并。但文本内的换行无效。只有使用br标签才能换行,并且不进行软换行。 | 合并 | 合并 | 不换行 | 删除 |
pre | 空白会被浏览器保留。连续的空白符会被保留。在遇到换行符或者<br>元素时才会换行。顺带一说标签pre的 white-space的默认属性pre,其行为方式类似HTML中的<pre>标签。 | 保留 | 保留 | 不换行 | 保留 |
pre-wrap | 保留空白符序列,但是正常地进行换行。连续的空白符会被保留。在遇到换行符或者<br>元素,或者需要为了填充时才会换行(软换行)。 | 保留 | 保留 | 换行 | 挂起 |
pre-line | 合并空白符序列,但是保留换行符。连续的空白符会被合并。在遇到换行符或者<br>元素,或者需要为了填充时会换行(软换行)。 | 保留 | 合并 | 换行 | 删除 |
break-spaces | 可以从空白符之间换行,所有空白符都被保留,包括行尾。与 pre-wrap的行为相同,也就是说连续的空白符会被保留。在遇到换行符或者<br>元素,或者需要为了填充时才会换行(软换行)。除了: ● 任何保留的空白序列总是占用空间,包括在行尾。如果行尾的空白符够多就会看到空白符占用了一行,pre-wrap 是没有这种现象的。 ● 每个保留的空格字符后都存在换行机会,包括空格字符之间。 ● 这样保留的空间占用空间而不会挂起,从而影响盒子的固有尺寸(最小内容大小和最大内容大小)。 | 保留 | 保留 | 换行 | 换行 |
inherit | 规定应该从父元素继承white-space属性的值。 |
那么,html如何识别\n\r,让这些特殊换行符换行?
使用white-space: pre-wrap;