关于强制不换行、强制换行的话题在网上已经被讨论了无数次,但我发现都不够全面,没有充分考虑各种浏览器、各种标签等情况,以致不兼容,所以我再来说说。由于div和p在本文的讨论中,效果相同,所以省略p。
文中“没有指定宽度的td”是指:为table指定了宽度,但没有给td指定宽度。
强制不换行
div,
td
{
white-space:nowrap;
}
这点在Firefox的div和td中,以及IE的div中,均没有问题。在IE的td中却很复杂:
如果没有为td指定宽度,则上述代码仍然有效。
如果为td指定了宽度,并且文字中无标点、无空格,上述代码不再有效。可以加word-break:keep-all;解决,这是CSS3的内容,不过是IE最先提出的,所以IE6中也支持。
如果为td指定了宽度,并且文字中有标点或空格。可以在文字与td之间套一层div加以解决。
综合起来,为了简单,使用:
div
{
white-space:nowrap;
}
只是为了兼容IE的td的不同情况,在文字与td之间套一层div。
强制换行
强制换行是为了遇到一些超长的连续字符串(比如aaaaaaaaaaaaa)时不撑大布局。
div,
td
{
word-break:break-all;
}
word-wrap:break-word;兼容性不够广,所以我们使用的是word-break:break-all;。上述代码兼容于IE、Chrome的div、指定宽度的td、没有指定宽度的td,非常不错,遗憾的是Firefox中不支持这个属性,所以无效果,为了不让其挤乱表格,可以加overflow:hidden来凑合着解决。
知其然知其所以然
上面介绍了三种属性:
white-space:normal|nowrap
word-wrap:normal|break-word
word-break:normal|break-all|keep-all
white-space
空白的处理方式,不止两个属性值,但在IE6中只支持这两个,所以不介绍其他的。
normal多个连续英文空格压缩为一个英文空格显示,在空白处可换行。
nowrap强制在同一行内显示所有文本,直到文本结束或者遭遇br对象。
word-wrap
内容超过容器边界时是否断开转行。
normal允许(只是允许,不是必须)内容顶开指定的容器边界。
break-word内容将在边界内换行。
word-break
换行的方式。
normal英文在标点和空白处换行,中文在任何地方换行。
break-all英文和中文都在任何地方换行,比如从一个英文单词的中间拆开换行。
keep-all英文和中文都在标点和空白处换行。
用css控制td强制换行-10-2316:11即便是给td限定的宽度,但是如果里面的内容是连续的,IE就认为是一个单词,不会换行。控制td换行的css样式:style="word-wrap:break-word;word-break:break-all;"
1<tablewidth="100%"border="0"cellspacing="1"cellpadding="0">
2<tr>
3<tdwidth="25%"style="word-wrap:break-word;word-break:break-all;"valign="bottom">
4文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息文本测试信息</td>
5</tr>
6</table>
解决长串英文字母不能自动换行的问题和td中汉字自动换行&CSS强制不换行
编程心得-10-1510:24阅读85评论0字号:大大中中小小例如:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa不能处理自动换行,将表格伸的很长很长,而汉字字符却可以自动换行。
原因是:
英文字母之间如果没有空格,系统认为是一个单词,就不会自动换行。汉字就没有这种情况。
解决办法:
用表格把要显示的内容装起来。
在<table>标签中加入“style='TABLE-LAYOUT:fixed'”,
在需要强制单词换行的<td>标签中加入“style='word-WRAP:break-word'”。
这样就可以了。
Div中:
div实现长英文字母自动换行CSS
IE浏览器
#wrap{white-space:normal;width:200px;}
或者
#wrap{word-break:break-all;width:200px;}
Firefox浏览器
#wrap{white-space:normal;width:200px;overflow:auto;}
或者
#wrap{word-break:break-all;width:200px;overflow:auto;}
2、不设置单元格宽度,但汉字会自动换行:
解决方法:<tablestyle='word-break:keep-all'>
CSS强制不换行
word-break属性,keep-all;不换行。。IE7和FF,IE6不行。。
white-space:nowrap;IE6及一下版本
顺便写下语法:
语法:
white-space:normal|pre|nowrap
取值:
normal:默认值。默认处理方式。文本自动处理换行。假如抵达容器边界内容会转到下一行
pre:换行和其他空白字符都将受到保护。这个值需要IE6+或者!DOCTYPE声明为standards-compliantmode支持。如果!DOCTYPE声明没有指定为standards-compliantmode,此属性可以使用,但是不会发生作用。结果等同于normal。参阅pre对象
nowrap:强制在同一行内显示所有文本,直到文本结束或者遭遇br对象。参阅noWrap属性
说明:
设置或检索对象内空格字符的处理方式。
空格字符,像换行,空格,TAB,在HTML文档中默认的是被忽略的。当此属性设置为normal或者nowrap时,你可以使用不换行空格的命名实体来添加空格,用br元素来添加换行。此属性对你使用文档对象模型(DOM)操作的内容的影响与其对IE显示内容的影响一样。
此属性作用于块对象。
此属性对于currentStyle对象而言是只读的。对于其他对象而言是可读写的。
对应的脚本特性为whiteSpace。
来至网络