默认设置,一长串英文字符(中间没空格)不会自动换行,比如:“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、不需要换行
/* 不会自动换行,有空格换行,ie支持,ff不支持 */
style='word-break: keep-all'要想兼容ie和ff,需设置white-space: nowrap; 这样设置不论是英文还是汉字,也不管是否有空格都会不换行显示
white-space : normal | pre | nowrap
(1)normal : 默认值。默认处理方式。文本自动处理换行。假如抵达容器边界内容会转到下一行
(2)pre: 换行和其他空白字符都将受到保护。这个值需要IE6+或者 !DOCTYPE 声明为standards-compliant mode 支持。如果 !DOCTYPE 声明没有指定为 standards-compliant mode, 此属性可以使用,但是不会发生作用。结果等同于 normal 。参阅 pre 对象
(3)nowrap : 强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象。
兼容性: IE5.5+, Firefox
word-wrap 用来控制换行。两种取值:
(1) normal
(2) break-word(此值用来强制换行,内容将在边界内换行,中文没有任何问题,英文语句也没问题。但是对于长串的英文,就不起作用。)
word-break 用来控制断词。三种取值:
(1) normal
(2) break-all(是断开单词。在单词到边界时,下个字母自动到下一行。主要解决了长串英文的问题。)
(3) keep-all(是指Chinese, Japanese, and Korean不断词,一句话一行,可以用来排列古诗哟~)
overflow: hidden; 即通过 css控制了 td 横向字体隐藏截取,而纵向遇到<br>的情况还是会撑开单元格的高度,ie9 好像支持这种效果,而不会撑开单元格的高度。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>自动换行</title>
<meta http-equiv="content-type" content="text/html;charset=gbk" />
<meta name="Keywords" content="CSS,自动换行" />
<meta name="Description" content="CSS控制自动换行" />
<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>
</head>
<body>
<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>
</body>
</html>运行以上代码,在 ie 和 ff 中横向会隐藏显示,而纵向只有在 ie9 中才会隐藏。
解决以上问题,只需在 td 中加上 div 即可实现 ie 和 ff 都支持,例如:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>自动换行</title>
<meta http-equiv="content-type" content="text/html;charset=gbk" />
<meta name="Keywords" content="CSS,自动换行" />
<meta name="Description" content="CSS控制自动换行" />
<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>
</head>
<body>
<table cellspacing="0" cellpadding="0" class="x-grid-body" style="width:150px;">
<tr>
<td>1</td>
<td style="width:100px;height:20px;">
<div>
11111111111111111111111111111111111111111111
<br>
2222222222222222222
<br>
33333333333333333333
<br>
33333333333333333333
<br>
</div>
</td>
</tr>
</table>
</body>
</html>