預設設定,一長串英文字元(中間沒空格)不會自動換行,比如:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa不能處理自動換行,而漢字字元卻可以自動換行。原因是:英文字母之間如果沒有空格,系統認為是一個單詞,就不會自動換行。漢字就沒有這種情況。
1、在需要強制設定換行時,
td中:
需用css來控制style='word-break: break-all'
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、在不需要換行時
style='word-break: keep-all'//不會自動換行,有空格換行,ie支援,ff不支援
要想相容ie和ff,需設定white-space: nowrap;,這樣設定,不論是英文還是漢字,也不管是否有空格都會不換行顯示
white-space : normal | pre | nowrap
normal : 預設值。預設處理方式。文本自動處理換行。假如抵達容器邊界内容會轉到下一行
pre : 換行和其他空白字元都将受到保護。這個值需要IE6+或者 !DOCTYPE 聲明為
standards-compliant mode 支援。如果 !DOCTYPE 聲明沒有指定為 standards-compliant mode,
此屬性可以使用,但是不會發生作用。結果等同于 normal 。參閱 pre 對象
nowrap : 強制在同一行内顯示所有文本,直到文本結束或者遭遇 br 對象。
相容性: IE5.5+, Firefox
另外解釋一下
word-wrap和word-break
word-wrap用來控制換行
兩種取值:
(1)normal
(2)break-word(此值用來強制換行,内容将在邊界内換行,中文沒有任何問題,英文語句也沒問題。但是對于長串的英文,就不起作用。)
word-break用來控制斷詞
三種取值:
(1)normal
(2)break-all(是斷開單詞。在單詞到邊界時,下個字母自動到下一行。主要解決了長串英文的問題。)
(3)keep-all(是指Chinese, Japanese, and Korean不斷詞,一句話一行,可以用來排列古詩喲~)
另外可參照以下文章
相容多浏覽器,相容 div、p、td 的強制不換行及強制換行
關于overflow: hidden;的說明
即使通過css控制了td橫向字型隐藏截取,而縱向遇到<br>的情況還是會撐開單元格的高度,ie9好像支援這種效果,而不會撐開單元格的高度
<style type="text/css">
.x-grid-body {
table-layout: fixed;
}
.x-grid-body td {
overflow: hidden;
border: 1px #dcdcdc dotted;
border-width: 1px;
word-break: keep-all;
white-space: nowrap;
}
</style>
<table cellspacing="0" cellpadding="0" class = "x-grid-body" style = "width:150px;">
<tr>
<td>
1
</td>
<td style = "width:100px;height:20px;">
11111111111111111111111111111111111111111111
<br>
2222222222222222222
<br>
33333333333333333333
<br>
33333333333333333333
<br>
</td>
</tr>
</table>
運作以上代碼,在ie和ff中橫向會隐藏顯示,而縱向隻有在ie9中才會隐藏
解決以上問題,隻需在td中加上div即可實作ie和ff都支援
<style type="text/css">
.x-grid-body {
table-layout: fixed;
}
.x-grid-body td {
overflow: hidden;
border: 1px #dcdcdc dotted;
border-width: 1px;
word-break: keep-all;
white-space: nowrap;
}
</style>
<table cellspacing="0" cellpadding="0" class = "x-grid-body" style = "width:150px;">
<tr>
<td>
1
</td>
<td style = "width:100px;height:20px;">
<div style = "height:20px;">
11111111111111111111111111111111111111111111
<br>
2222222222222222222
<br>
33333333333333333333
<br>
33333333333333333333
<br>
</div>
</td>
</tr>
</table>