怎样设置字符串自动换行和不换行?

在实际项目中可能需要设置某些超长字符串自动换行,或者强制不换行。这是篇文章将向读者介绍怎样使用CSS来解决这个问题。详细信息请查看全文,希望能给你带来帮助。

默认设置,一长串英文字符(中间没空格)不会自动换行,比如:“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     

normal  :  默认值。默认处理方式。文本自动处理换行。假如抵达容器边界内容会转到下一行

pre     :  换行和其他空白字符都将受到保护。这个值需要IE6+或者 !DOCTYPE 声明为

            standards-compliant mode 支持。如果 !DOCTYPE 声明没有指定为 standards-compliant mode,  

            此属性可以使用,但是不会发生作用。结果等同于 normal 。参阅 pre 对象  

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好像支持这种效果,而不会撑开单元格的高度。

<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>
学习有两忌,自高和自狭。 —— 书摘
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号