CSS-字体英文换行问题

html-css017

CSS-字体英文换行问题,第1张

比如在div中定一个宽度为200px的div,内部有些字体,如果全是中文或者全是英文换行后则占满,但如果中文后面接英文后,如果英文最后例如HOLLOWORD中的D不是在一行末尾的话则会直接换行,第一行是测试用例换行,第二行则是HOLLOWORD

全是中文: 全是中文则div内部会进行字体占满

前面中文后面英文: 如果多个中文和多个英文(数字)拼接在一起,且英文(数字)末尾字母超出当前行,那么整个英文则会自动换行不会进行位置占满(无论英文是小写(数字)还是小写结果都是一样)

前面英文(数字)后面中文:

两边英文(数字),中间中文:

如果全是英文(数字):

中英文断词方式不一样

这是因为div中,英文字母之间没有空格的话,它会默认认为这是一个英文单词,所以单词就一次输出不换行。那么,难道我们得在每个字母中间加入一个空格来解决这个问题么?其实不用的,可以通过CSS实现

在div的style中设定 word-break:break-all允许单词内换行即可实现自动换行

1、普通设置: style{ width:400px overflow:hidden text-overflow:ellipsis display:-webkit-box / * autoprefixer:off * / -webkit-box-orient:vertical / * autoprefixer:on * / -webkit-line-clamp:4 } 效果如下:以上会导致英文和数字自动换行不对齐。 2、解决后 style{ width:400px word-break:break-all word-wrap:break-word overflow:hidden text-align:left//这是我在表格中使用时表头设置了居中,通用可不设置 text-overflow:ellipsis display:-webkit-box / * autoprefixer:off * / -webkit-box-orient:vertical / * autoprefixer:on * / -webkit-line-clamp:4 }

看 CSS 的解释,word-break: keep-words或者 normal 并且 word-wrap: normal 就好了,text-wrap 也是 normal,有些是默认值,不需要特别指出的。

word-break 的解释中提到像中文这种词语间没有间隔时我们通常是 break-all ,而英文都不需要 break-all。

从 break-word 和 break-all 这样的名字你应该能看出来,它是表示把一个词不加区分地无条件地切开。

下面这个页面同时能查到这3个 properties:

http://www.w3.org/TR/2011/WD-css3-text-20110215/#word-break0