HTML文本界面英文无法自动换行的解决办法

问题:

在一个设定好宽度的div中,当我们输入的中文文字长度超过了设定宽度时,会自动换到下一行。但是,如果输入纯英文字符或数字时,此时无论你div设定宽度为多少,都是不换行且在同一行输出,实现溢出效果。

原因:

中英文断词方式不一样

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

解决办法

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

两种方法的区别说明:

1,word-break:break-all 例如div宽400px,它的内容就会到400px自动换行,如果该行末端有个英文单词很长(congratulation等),它会把单词截断,变成该行末端为conra(congratulation的前端部分),下一行为tulation(conguatulation)的后端部分了。

2,word-wrap:break-word 例子与上面一样,但区别就是它会把congratulation整个单词看成一个整体,如果该行末端宽度不够显示整个单词,它会自动把整个单词放到下一行,而不会把单词截断掉的。还有就是如果单词太长的话也会进行分割。

特殊形况:

设置了word-break:break-all 或者word-wrap:break-word都无效,字符串不会自动换行。

经过查证,发现原因会有两个:

1、word-wrap对行内元素是没有效果的

2、一般情况下,元素拥有默认的white-space:normal(自动换行,不换行是white-space:nowrap),可能是元素中设置的white-space是norwrap导致,无法换行。所以需要 

white-space:normal;
word-break:break-all;
这样问题就解决了。
white-space   对程序中的空白进行处理,默认是normal (浏览器会对空白进行忽略)

3、对table 的td 标签下的元素设置word-wrap:word-break是没有效果的 

你可能感兴趣的:(html,css,前端)