CSS属性探秘系列(一):word-break与word-wrap

一、浏览器自带的自动换行
各浏览器自身都带有自动换行功能,当浏览器显示文本的时候会让文本在浏览器或者div元素的右端自动换行。换行情况如下:

1.non-CJK:会在半角空格或者连字符(-)位置自动换行,不会在长单词的中间换行

2.CJK(中日韩):可以在任何一个CJK字体后换行

3.CJK中包含non-CJK:non-CJK部分按 non-CJK情况处理进行换行处理

4.CJK中含有标点符号时,浏览器不会让标点符号位于一个行的行首,会使标点符号和前一个字符组成一个整体进行换行。

二、word-break:
属性及浏览器兼容

value description IE FF Chrome& Safari Operanormal浏览器默认换行yesyesyesyeskeep-allCJK:不允许换行,non-CJK:与normal属性相同,IE中(对于CJK:在半空格、连接符或者任何标点符号处换行),chrome&safari不支持(使用默认换行)yesyesnoyesbreak-all允许单词内换行,IE(不允许标点符号位于行首),FF&Chrome&Safari(允许标点符号位于行首)yesyesyesyes

三、word-wrap:
1.取值:
normal:在半空格、连接符位置换行
break-word:允许在长单词(如URL地址)内部断行

2.支持所有浏览器

四、实例

<style type="text/css">
.box{width:100px;height:100px;border:2px solid #f00;color:#333;font:12px arial;margin-bottom:10px;}
.keepall{word-break:keep-all;}
.breakall{word-break:break-all;}
.breakword{word-wrap:break-word;}
</style>



<div class="box keepall">
自身都带有自动换行功能啊,AAAAAA BBBBBBBBBBBBB,CCCCCCCCC,的右端自动换行。
</div>
此例中注意keep-all在不同浏览器中的兼容,特殊符号处的换行!
<div class="box breakall">
自身都带有自动换行功能啊,AAAAAA BBBBBBBBBBBBB,CCCCCCCCC,的右端自动换行。
</div>
此例中注意逗号的位置!
<div class="box breakword">
自身都带有自动换行功能啊,AAAAAA BBBBBBBBBBBBB,CCCCCCCCC,的右端自动换行。
</div>


五、word-break:break-all 与word-wrap:break-word区别?
看上图即可说明

参考链接:

https://developer.mozilla.org/en-US/docs/Web/CSS/word-break