16
2008
04

解决Firefox长字符串撑开父容器,不折行问题

众所周知,对于类似"aaaaaaaaaaaaaaaaa"这样超长的字符串,会把容器撑的变形.

废话不多说,解决方法:

1. IE : 在相应位置增加如下样式表定义即可

word-break: break-all;

2. FF : Firefox并不像IE那样听话,自从FF的第一个版本至今,仍然没有解决此问题,而上面的方法也不起作用,只能用javascript来控制了,将如下代码放置在需要折行显示的下面即可

<script language="javascript" type="text/javascript" defer="defer">
javascript:(function(){var D=document; F(D.body); function F(n){var u,r,c,x; if(n.nodeType==3){ u=n.data.search(/\S{10}/); if(u>=0) { r=n.splitText(u+10); n.parentNode.insertBefore(D.createElement("WBR"),r); } }else if(n.tagName!="STYLE" && n.tagName!="SCRIPT"){for (c=0;x=n.childNodes[c];++c){F(x);}} } })();
</script>


3.除了javascript方法外,我们还可以通过CSS样式来控制折行:

pre{
white-space: pre; /* CSS2 */
white-space: -moz-pre-wrap; /* Mozilla */
white-space: -hp-pre-wrap; /* HP printers */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: pre-wrap; /* CSS 2.1 */
white-space: pre-line; /* CSS 3 (and 2.1 as well, actually) */
word-wrap: break-word; /* IE */
}


如果想控制DIV和TD强制不折行,可以用style="white-space:nowrap;"(通用)。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。