CSS中几个与换行有关的属性简明总结
word-wrap
normal 默认值。允许内容顶开指定的容器边界。
break-word 内容将在边界内换行。如果需要,词内换行也将发生。
白话解释:也就是说如果一个很长的英文单词如果超过了容器长度,是否折断英文单词,默认是不折断。
支持情况:ie、firefox 3.6、chrome 4 中测试通过。
word-break
normal 默认值。依照亚洲语言和非亚洲语言的文本规则,允许在字内换行。
break-all 该行为与亚洲语言的 normal 相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本。
keep-all 与所有非亚洲语言的 normal 相同。对于中文,韩文,日文,不允许字断开。适合包含少量亚洲文本的非亚洲文本。
白话解释:break-all 把英文单词拆成一个一个的就像亚洲文字一样可单独拆开;keep-all 把一长串亚洲文字当作是一个英文单词一样对待。
支持情况:ie 支持全部;firefox 3.6 不支持全部;chrome 4 不支持 keep-all。
white-space
normal 默认值。默认处理方式。文本自动处理换行。假如抵达容器边界内容会转到下一行
pre 换行和其他空白字符都将受到保护。这个值需要 ie6+ 或者 !doctype 声明为 standards-compliant mode 支持。如果 !doctype 声明没有指定为 standards-compliant mode ,此属性可以使用,但是不会发生作用。结果等同于 normal 。
nowrap 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象。
白话解释:pre 源代码中有几个空格,显示就有几个空格;源代码中有回车换行,显示也有换行。nowrap 不见 br 不换行,即使是中文汉字超过了容器大小。
支持情况:ie、firefox 3.6、chrome 4 中测试通过,不过 pre 在 ie 中的支持情况还是请参照上面的说明。
line-break
normal 默认值。应用日文文本的默认换行规则。
strict 强制日文文本换行规则的严谨性。
应用
强制换行,遇到长英文单词,直接将词折断。
word-wrap:break-word;
也有人用 break-word:break-all,但考虑到兼容性,还是建议用 word-wrap:break-word;。
除非遇到 br,否则不管怎样都不换行。
white-space:nowrap;
附:word-wrap:break-word 与 word-break:break-all 区别
word-wrap:break-word 是优先断单词(根据空格判断单词),而 word-break:break-all 完全没有把文字当单词看待,在它眼里,都是一块一块的字符。
这就会造成这么两情况:
假如一个 p 有 100px 宽,而其中有很长一段无空格的英文字符,完全超过 100px 了,此时二者表现相同,都是在边界处将字符截断。
假如一个 p 有 100px 宽,其中有段文字既有中文也有英文,前面是中文,占了 70px,后面一个很长的英文单词有 50px。对于 word-wrap:break-word 会将该单词全部折到下一行输出,而 word-break:break-all 会利用剩下的 30px 输出单词的前半部分,再到下一行输出剩下的 20px。
支持情况:
word-wrap:break-word 受众多浏览器支持;
word-break:break-all 受较少浏览器支持。