写样式时遇到的英文字符超出容器问题,度娘后了解下列知识,与大家分享,同时以便自己日后回顾。

一、自动换行问题

正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大。

下面介绍的是CSS如何实现换行的方法

对于div,p等块级元素

正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的 white-space:normal ,当定义的宽度之后自动换行
html:

<div id="wrap">正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定义</div>

css:

#wrap{white-space:normal; width:200px; }

1.(IE浏览器)连续的英文字符和阿拉伯数字,使用word-wrap : break-word ;或者word-break:break-all;实现强制断行

#wrap{word-break:break-all; width:200px;}

或者

#wrap{word-wrap:break-word; width:200px;}

html:

<div id="wrap">abcdefghijklmnabcdefghijklmnabcdefghijklmn111111111</div>

效果:可以实现换行

2.(Firefox浏览器)连续的英文字符和阿拉伯数字的断行,Firefox的所有版本的没有解决这个问题,我们只有让超出边界的字符隐藏或者,给容器添加滚动条

#wrap{word-break:break-all; width:200px; overflow:auto;}

html:

效果:容器正常,内容隐藏

对于table

1. (IE浏览器)使用 table-layout:fixed;强制table的宽度,多余内容隐藏

<table style="table-layout:fixed" width="200">

    <tr>

        <td>abcdefghigklmnopqrstuvwxyz1234567890ssssssssssssss</td>

    </tr>

</table>

效果:隐藏多余内容

2.(IE浏览器)使用 table-layout:fixed;强制table的宽度,内层td,th采用word-break : break-all;或者word-wrap : break-word ;换行

<table width="200" style="table-layout:fixed;">

    <tr>

        <td width="25%" style="word-break : break-all; ">abcdefghigklmnopqrstuvwxy 1234567890</td>

        <td style="word-wrap : break-word ;">abcdefghigklmnopqrstuvwxyz 1234567890</td>

    </tr>

</table>

效果:可以换行

3. (IE浏览器)在td,th中嵌套div,p等采用上面提到的div,p的换行方法 (
技巧 )

4.(Firefox浏览器)使用
table-layout:fixed;强制table的宽度,内层td,th采用word-break :
break-all;或者word-wrap : break-word
;换行,使用overflow:hidden;隐藏超出内容,这里overflow:auto;无法起作用

<table style="table-layout:fixed" width="200">

    <tr>

        <td width="25%" style="word-break : break-all; overflow:hidden; ">abcdefghigklmnopqrstuvwxyz1234567890</td>

        <td width="75%" style="word-wrap : break-word; overflow:hidden; ">abcdefghigklmnopqrstuvwxyz1234567890</td>

    </tr>

</table>
效果:隐藏多于内容

 

二、CSS样式 强制不换行

CSS样式

强制不换行

div{ 

    white-space:nowrap; 

} 

自动换行

div{  

    word-wrap: break-word;  

    word-break: normal;  

} 

强制英文单词断行

div{ 

    word-break:break-all; 

} 

CSS设置不转行:


overflow:hidden  隐藏 

white-space:normal  默认  

pre  换行和其他空白字符都将受到保护 

nowrap  强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象 

设置强行换行:


word-break:  

normal ; 依照亚洲语言和非亚洲语言的文本规则,允许在字内换行 

break-all :  该行为与亚洲语言的normal相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本 

keep-all :  与所有非亚洲语言的normal相同。对于中文,韩文,日文,不允许字断开。适合包含少量亚洲文本的非亚洲文本与之间的高度解决办法

英文不换行

CSS里加上 word-break: break-all;
问题解决。这个问题只有IE才有,在FF下测试,FF可以自己加滚动条,这样也不影响效果

建议大家做Skin时,记得在body里加
word-break: break-all; 这样可以解决IE的框架被英文撑开的问题

以下引用word-break的说明,
注意word-break 是IE5+专有属性

语法:

word-break : normal | break-all | keep-all

参数:

normal :  依照亚洲语言和非亚洲语言的文本规则,允许在字内换行

break-all :  该行为与亚洲语言的normal相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本

keep-all :  与所有非亚洲语言的normal相同。对于中文,韩文,日文,不允许字断开。适合包含少量亚洲文本的非亚洲文本

说明:

设置或检索对象内文本的字内换行行为。尤其在出现多种语言时。

对于中文,应该使用break-all 。

对应的脚本特性为wordBreak。

示例:  div {word-break : break-all; }

转载自:http://blog.csdn.net/ye987987/article/details/8011875

最新文章

  1. 简单研究Android View绘制三 布局过程
  2. MyEclipse8.5破解方法
  3. Go的基本示例
  4. poj3050
  5. Sql Server来龙去脉系列 必须知道的权限控制基础篇
  6. 如何做好presentation
  7. 《Code Complete》ch.25 代码调整策略
  8. POJ1671 动态规划
  9. 同是办公软件,wps和office有什么区别?
  10. font-face 在 Firefox无法正常工作问题
  11. 20190409-层叠の层叠上下文、层叠水平、层叠顺序、z-index、伪元素层叠
  12. DOTween 相关API效果
  13. MYSQL添加远程用户或允许远程访问
  14. 『TensorFlow』批处理类
  15. UML和模式应用1: 面向对象的分析与设计
  16. Mysql 5.7 忘记root密码或重置密码的详细方法
  17. 23种设计模式之代理模式(Proxy)
  18. linux下如何进入单用户模式
  19. lua字符串类型
  20. 理解webpack4.splitChunks之chunks

热门文章

  1. Java Script 字符串操作
  2. 拍照、本地图片工具类(兼容至Android7.0)
  3. 【TED】如何掌握你的自由时间
  4. AngularJS学习笔记2
  5. es5和es6实现lazyman
  6. 光场相机重聚焦之三——Matlab光场工具包使用、重聚焦及多视角效果展示
  7. 让你的JS代码更具可读性
  8. androidStudio通过svn进行版本控制
  9. TagHelper的一些个人学习体会(发现了微软官方文档的一个错误)
  10. 修改nagios密码和遇到的问题