顶宽的div中的英文不能自动换行

来源:互联网 发布:linux 复制所有内容 编辑:程序博客网 时间:2024/04/30 01:24

1.在一个设定好宽度的div中,当我们输入的中文文字长度超过了设定宽度时,会自动换到下一行。但是,如果输入的是英文字母,那么,无论你div设定宽度为多少,英文字母都是不换行直接在同一行输出,导致div的宽度远远超出设定的大小

这里写图片描述

这里写图片描述

原因:英文字母之间没有空格的话,它会默认认为这是一个英文单词,所以单词就一次输出不换行

1.1解决办法:

- word-break:break-all

- word-wrap:break-word

1.2区别:

- word-break:break-all 内容到达固定宽度处会自动换行,如果该行末端有个英文单词很长,则把单词截断。对FF无效

- word-wrap:break-word 如果a行末端宽度不够显示整个单词,它会自动把整个单词放到下一行b行 ,而不会在a行把单词截断。若b行整行都不够一个单词宽,则将单词截断以对齐。对FF、IE有效

1.3

- word-break:break-all能很好的让文本对齐,显得整洁,但是100%切断单词,易读性降低

- word-wrap:break-word比较人性化,但行末会参差不齐

2.一个定宽的容器,左右padding值20像素,结果输入一段文字后(有中文也有英文字符),会发现右侧根本就不对齐,有些地方距离右侧的空白大小也不是20像素,感觉不和谐,设计师就希望排列能够好看一点,右边要对齐

这里写图片描述

其实呢,要实现两端对齐很简单,使用text-align:justify

要理解原理,我们首先要搞清楚文本的两端对齐声明text-align:justify起作用的本质。首先,大家要知道,text-align:justify是专门为英文设计的,用来实现英文语句的两端对齐。注意这里的”是语句的对齐”。大家应该都知道,英文语句是一个单词一个单词组合而成的,每个单词之前使用空格分隔

text-align:justify之所以可以让英文段落两端对齐,那是因为每个英文单词之前那个透明看不见的空格被拉伸了。注意,是空格被拉伸了,对,只有空格。因此,当我们写下一段洋洋洒洒中文内容的时候,text-align:justify是没有任何作用的,跟没设置没任何区别。为什么呢?很简单,因为中文是一个一个汉字,汉字之间是没有空格的,自然也就不能拉伸,自然也就不能两端对齐

怎么办呢?难道中文就不行了吗?

当然不是!既然正常的中文文字之间没有空格,我们自己加一点不就好了。例如下面代码

“宁泽涛小鲜肉”.split(“”).join(” “);

结果就是:

这里写图片描述

会发现,每个中文文字之间都有的空格字符,于是,text-align:justify就能大发神威,实现两端对齐!

OK,现在两端对齐是实现了,但是,空格字符它也是真实存在的字符,是会占据宽度的。如果放任不管,文字就会太稀松,阅读很吃力,会被当bug提出来的,怎么办呢?

很简单,我们使用letter-spacing收缩字符间距就可以了。例如demo页面:

这里写图片描述

原创粉丝点击