CSS中英文换行和不换行
CSS中英文换行和不换行
CSS中英文换行和不换行我们一般控制换行所用到的CSS属性一共三个:word-wrap;word-break;white-space
一、word-wrap
word-wrap:normal(默认)|break-word;
参数
normal:允许内容顶开指定的容器边界。
break-word:内容将在边界内换行,必要时触发word-break(注意请分辨清楚word-break和break-word两个是不同的东西,一个为属性,一个为参数);
说明
word-wrap是控制是否”为词断行”的,设置或检索当前行超过指定容器时是否断开转行。中文没有任何问题,语句也没有问题,但是对于长串的英文,就不起作用。
范例
congratulation这个单词属于长串英文,word-wrap:break-word整个单词看成一个整体,如果该行末端宽度不够显示整个单词,它会自动把整个单词放到下一行,而不会把单词截断,这就是对于长串文字不起作用的解释。word-wrap:normal是默认情况,英文单词不被拆开。
结论
作用范围仅为li这类标准块级元素,th,td这类table元素虽然识别但是没有效果(如果为td,th加上宽度word-wrap在IE下是能够发挥效果的,但根据完全兼容性方便记忆角度上来说还是以前面的结论为准)。
二、word-break
word-break:normal(默认)||break-all||keep-all Firefox、Opera不能识别
参数
normal: 依照亚洲语言和非亚洲语言的文本规则,允许在字内换行。
break-all: 该行为与亚洲语言的normal相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本。
keep-all: 与所有非亚洲语言的normal相同。对于中文,韩文,日文,不允许字断开。适合包含少量亚洲文本的非亚洲文本。
word-break:break-all,是断开单词。在单词到边界时,下个字母自动到下一行。主要解决了长串英文的问题(恰恰弥补了上面word-wrap:break-word对于长串文字不起作用的缺陷)。
范例
继续以上面congratulation这个单词属于长串英文,word-break:break-all它会把单词截断,该行末端就会变成类似conra(congratulation的前端部分),下一行为tulation(conguatulation)的后端部分了。
word-break:keep-all,是指Chinese, Japanese, and Korean不断词。即只用此时,不用word-wrap,中文就不会换行了。(英文语句正常。)
结论
作用范围仅为li这类标准块级元素,th,td这类table元素虽然识别但是没有效果(经测试Chrome下word-break:break-all是有效果的,但根据完全兼容性方便记忆角度上来说还是以前面的结论为准)。Firefox,Opera是无法识别word-break的,更不用提Firefox下的th,td中使用word-break的效果了。
三、white-space
white-space: normal(默认) | pre | nowrap
参数
normal: 默认。空白会被浏览器忽略。
pre: 空白会被浏览器保留。其行为方式类似HTML中的pre标签。
nowrap: 文本不会换行,文本会在在同一行上继续,直到遇到br标签为止。
说明
对于pre属性,其实就是HTML中连续的多个空白符会被合并,然后为了不让他合并(最常用的场合就是表示代码文字缩进)让其中的空白符继续保留而不需要我们增加额外的样式和标签来控制它的缩进和换行。pre标签的原理也是一样的内部默认有了个white-space:pre。
对于nowrap属性,这个是强制不换行核心,一般强制不换行就是利用这个属性。Firefox的li和td中,以及IE的li中,均没有问题。唯一的瑕疵就是在IE的td中会有一个问题,如果td没有指定宽度,则nowrap仍然有效,如果td有宽度,并且文字中无标点、无空格(例如中文长串文字),nowrap则不再有效。解决方式就是可以加word-break:keep-all;可以解决此问题。
结论
如果在li这类标准块级元素中需要强制换行,最普遍的方案那就是word-wrap:break-word; word-break:break-all;此方式的缺点就是会导致如果恰巧该行末端宽为一个长串英文单词,那么该单词会被撕开的尴尬样式(而且FF不识别word-break,反而不会撕开这个单词)。
强制不换行,多余的部分用省略overflow:hidden;white-space:nowrap;text-overflow:ellipsis;
四、实例
<style type="text/css">
.p1{ word-break:break-all; width:150px;}/*只对英文起作用,以字母作为换行依据*/
.p2{ word-wrap:break-word; width:150px;}/*--只对英文起作用,以单词作为换行依据*/
.p3{white-space:pre-wrap; width:150px;}/*只对中文起作用,强制换行*/
.p4{white-space:nowrap; width:10px;}/*强制不换行,都起作用*/
.p5{white-space:nowrap; overflow:hidden; text-overflow:ellipsis; width:100px;}//*不换行,超出部分隐藏且以省略号形式出现*/
</style>
热门推荐
- mongodb常用命令的语法
- vue 父组件传值(Vue两个同级组件传值实现)
- python基础教学之125 装饰器简介(python3 property装饰器实现原理与用法示例)
- python复杂的验证码处理(Python 通过打码平台实现验证码的实现)
- postgresql docker 宿主机(本地Docker安装Postgres 12 + pgadmin的方法 支持Apple M1)
- phpzip压缩原理(PHP生成zip压缩包的常用方法示例)
- 从宝塔面板找网站会员数据(BT宝塔面板高并发大流量网站优化方案分享)
- docker compose 与docker区别(windows安装Docker与docker-compose套装的详细教程)
- 怎么用python分析足球(使用Python进行体育竞技分析预测球队成绩)
- php符串使用教程学习(PHP实现支持CURL字符串证书传输的方法)