zoukankan      html  css  js  c++  java
  • 英文字符和汉字自动换行和不换行的设置

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

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

    默认设置,一长串英文字符(中间没空格)不会自动换行,比 如:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa不能处理自动换行,而汉字字符却可以自动换行。原因 是:英文字母之间如果没有空格,系统认为是一个单词,就不会自动换行。汉字就没有这种情况。

    1、在需要强制设置换行时,

    td中:

    需用css来控制style='word-break: break-all'

    div中 :  

    div 实现长英文字母自动换行CSS

    IE浏览器
    #wrap{white-space:normal; 200px; }
    或者
    #wrap{word-break:break-all;200px;}

    Firefox浏览器
    #wrap{white-space:normal; 200px; overflow:auto;}
    或者
    #wrap{word-break:break-all;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- 1px;  
        word-break: keep-all;  
        white-space: nowrap;  
    }  
    </ style >   
    
    < table    cellspacing = "0"   cellpadding = "0"    class  =  "x-grid-body"    style  = "150px;" >   
        < tr >   
            < td >   
                1  
            </ td >   
            < td   style  =  "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- 1px;  
        word-break: keep-all;  
        white-space: nowrap;  
    }  
    </ style >   
    
    < table    cellspacing = "0"   cellpadding = "0"    class  =  "x-grid-body"   style  = "150px;" >   
        < tr >   
            < td >   
                1  
            </ td >   
    
            < td   style  =  "100px;height:20px;" >      
            < div   style  =  "height:20px;" >   
                  11111111111111111111111111111111111111111111  
                  < br >   
                  2222222222222222222  
                  < br >   
                  33333333333333333333  
                  < br >   
                  33333333333333333333  
                  < br >   
             </ div >   
            </ td >   
        </ tr >   
    </ table >   
  • 相关阅读:
    吃甘蔗(中等,模拟)
    jquery对象里面的context参数
    event对象的使用注意事项
    EcmaScript源码
    对js运算符“||”和“&&”的总结
    浏览器滚动条样式
    浏览器的重绘与重排
    input[checkbox],input[radiobox]的一些问题
    height:100%
    Sublime Text 3 多行游标
  • 原文地址:https://www.cnblogs.com/ferron/p/4529744.html
Copyright © 2011-2022 走看看