(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期2014-02-19)

 

英文字符无空格的情况下不会自动换行

默认设置,一长串英文字符(中间没空格)不会自动换行,比 如: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好像支持这种效果,而不会撑开单元格的高度

 

Html代码 

< 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都支持

Html代码

< 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 >