CSS中的white-space, word-wrap, word-break(较浅显,待后续修正)

white-space, word-wrap, word-break这三个css属性大致看来都是控制行内字符换行规则的,其中:

white-space的值有:

white-space: normal
white-space: nowrap
white-space: pre
white-space: pre-wrap
white-space: pre-line
white-space: inherit
white-space: unset

默认值是normal, 意思是按照一般的换行规则进行换行(?这里的一般换行规则我并没有搞清楚),需要注意的是nowrap值,意思是不允许行内换行。简而言之,white-space属性是控制行内是否可以换行的。

word-wrap的值有:

word-wrap: normal;
word-wrap: break-word;
word-wrap: inherit;
word-wrap: initial;
word-wrap: unset;

默认值是normal, 需要注意的是break-word值,鑫旭大神的解释是:

如果这一行文字有可以换行的点,如空格,或CJK(Chinese/Japanese/Korean)(中文/日文/韩文)之类都没有的话,则就不打英文单词或字符的主意了,让这些换行点换行,至于对不对齐,好不好看,则不关心,因此,很容易出现一片一片牛皮癣一样的空白的情况。

意思大致是尽量不在英文单词中间强制换行,但是如果没有空格,连字符,中文/日文/韩文之类的话,就只能在英文字符中间换行了,这样会导致换行的位置不一致。
这里稍微要注意的是这个属性在CSS3中改名叫overflow-wrap了,但是目前兼容性并不十分友好。

word-break的值有:

word-break: normal 
word-break: break-all 
word-break: keep-all
word-break: inherit
word-break: initial
word-break: unset

默认值是normal,这里需要注意的是break-all和keep-all两个值,break-all意思是不管三七二十一,文本超出容器就进行换行,keep-all意思是不管三七二十一,都不进行换行。

所以:word-wrap和word-break是控制如何进行换行的,且word-wrap:break-word和word-break: break-all效果基本一致。

同时经过实践得出,在chrome浏览器中white-space的优先级最高,只要设置了nowrap,不管你怎样设置换行方式(word-break和word-wrap值)都不会进行换行。word-wrap优先级次之,设置其为beak-word以后,再设置word-break值为keep-all并没有什么卵用。

插播一句:如果想原样显示你的东西,请使用pre标签

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值