CSS3中的word-wrap、word-break、white-space想必大家都接触过,今天我们来一起温故而知新。
当我们在网站编辑文章的时候难免会遇到文字过长导致溢出的情况,仔细观察会发现是我们的CSS没加文字截断,然后加上word-break:break-all就搞定了。下面给大家介绍CSS3中控制文字换行的三个属性:
一、word-wrap
1、定义
word-wrap 属性允许长单词或 URL 地址换行到下一行。
2、语法和参数
word-wrap:normal(默认)|break-word normal:允许内容顶开指定的容器边界,如果单词超长,会冲出边界(在当前行显示,不会换行)。 break-word: 内容将在边界内换行,当单词在当前行放不下时,会自动切换到下一行,必要时会触发word-break(注意:请分辨清楚word-break和break-word这俩个是不同的东西,一为属性另为参数)。 注:各个浏览器均能识别。
3、说明
word-wrap是控制是否“为词断行”的,设置或检索当前行超过指定容器的边界时是否断开转行。中文没有任何问题,英文语句也没问题。但是对于长串的英文,就不起作用。
4、例子
congratulation这个单词属于长串英文,word-wrap:break-word整个单词看成一个整体,如果该行末端宽度不够显示整个单词,它会自动把整个单词放到下一行,而不会把单词截断,这就是对于长串文字不起作用的解释。word-wrap:normal是默认情况,英文单词不被拆开。
5、总结
作用范围仅为div这类标准块级元素,th,td这类table元素虽然识别但是没有效果(如果为td,th加上宽度word-wrap在IE下是能够发挥效果的,但根据完全兼容性方便记忆角度上来说还是以前面的结论为准)。
二、word-break
1、定义
word-break 属性规定自动换行的处理方法。 提示:通过使用 word-break 属性,可以让浏览器实现在任意位置的换行。
2、语法和参数
word-break: normal(默认)|break-all|keep-all normal:依照亚洲语言和非亚洲语言的文本规则,允许在字内换行:中文则到边界处的汉字换行,英文则整个单词换行,如果出现某个单词长度过长,则会撑破容器,如果边框为固定属性,则后面部分将无法显示。 break-all:可以强行截断英文单词,强行换行。该行为与亚洲语言的normal相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本。 keep-all:与所有非亚洲语言的normal相同。对于中文,韩文,日文,不允许字断开。即如果是中文,将把前后标点符号内的一个汉字短语整个换行,英文单词也整个换行。 注:Firefox、Opera不能识别。
3、说明
word-break:break-all,是断开单词。在单词到边界时,下个字母自动到下一行。主要解决了长串英文的问题(恰恰弥补了上面word-wrap:break-word对于长串文字不起作用的缺陷)。
4、例子
继续以上面congratulation这个单词属于长串英文,word-break:break-all它会把单词截断,该行末端就会变成类似conra(congratulation的前端部分),下一行为tulation(conguatulation)的后端部分了。 word-break:keep-all,是指Chinese, Japanese, and Korean不断词。即只用此时,不用word-wrap,中文就不会换行了。(英文语句正常。)
5、总结
作用范围仅为div这类标准块级元素,th,td这类table元素虽然识别但是没有效果(经测试Chrome下word-break:break-all是有效果的,但根据完全兼容性方便记忆角度上来说还是以前面的结论为准)。Firefox,Opera是无法识别word-break的,更不用提Firefox下的th,td中使用word-break的效果了。
三、white-space
1、定义
word-spacing 属性增加或减少单词间的空白(即字间隔)。 该属性定义元素中字之间插入多少空白符。针对这个属性,“字” 定义为由空白符包围的一个字符串。如果指定为长度值,会调整字之间的通常间隔;所以,normal 就等同于设置为 0。允许指定负长度值,这会让字之间挤得更紧。 注释:允许使用负值。
2、语法和参数
white-space:normal | nowrap | pre-wrap | pre-line | inherit normal:默认,空白符会被浏览器忽略。 nowrap:文本不会换行,文本会在在同一行上继续,直到遇到
标签为止。 pre-wrap:保留空白符,但是正常地进行换行。 pre-line:合并空白符,但是保留换行符。 inherit:继承父元素的设置 注:各个浏览器均能识别。
3、说明
对于pre属性,其实就是HTML中连续的多个空白符会被合并,然后为了不让他合并(最常用的场合就是表示代码文字缩进)让其中的空白符继续保留而不需要我们增加额外的样式和标签来控制它的缩进和换行。pre标签的原理也是一样的内部默认有了个white-space:pre。 对于nowrap属性,这个是强制不换行核心,一般强制不换行就是利用这个属性。Firefox的div和td中,以及IE的div中,均没有问题。唯一的瑕疵就是在IE的td中会有一个问题,如果td没有指定宽度,则nowrap仍然有效,如果td有宽度,并且文字中无标点、无空格(例如中文长串文字),nowrap则不再有效。解决方式就是可以加word-break:keep-all;可以解决此问题。
你还在找3W的资料吗,如上可以让你清晰明了掌握它。
如果想要学习更多关于前端的干货,请进我Q群详聊:142991222,我们悄悄说。大家多多支持,多多转发,多多吐糟,才让我更有动力去多多分享。