• 沙里软件

  • ShaliSoft.com [手机站]   办公桌收纳抽屉
  • 首页
  • 博文
  • 演示
  • 管理
  • 英文单词的自动换行问题可以说折磨过很多人

    网络   2013/6/11 18:27:28

    如果一个单词写很长,会把表格给撑破的,而管了的话就会拆开英文单词.

    防止表格被撑破

    这个问题曾经有很多人提及的,后来在早期的版本里我也解决过,可是导致了英文词语被拆散换行,所以在做新的模板时没有加上控制此项的一些css码。今天试验了一下,发现解决的方法很简单。


    按照网上大多数文章的说法,只要在CSS中加入:
    代码

    table {<br />
    table-layout:fixed;word-break:break-all;word-wrap:break-word;}<br />
    div{word-break:break-all;word-wrap:break-word;}


    图片及英文太长撑破表格,表格变形问题的CSS解决方法


    table-layout:auto | fixed
    word-wrap : normal | break-word
    word-break : normal | break-all | keep-all
    经过各个取值试用后觉得如下组合效果是最好的:
    <table style=’table-layout:fixed’>
    <tr>
    <td style=’word-wrap : break-word’>文本或图片内容</td>
    </tr>
    </table>

    就可以解决表格和层被撑破,最初我也是这样做的。不过这样的代码会造成一个问题,你会发现英文词全部被截断了,这不符合英语的书写习惯也不利于阅读。

    后来我发现上述代码改写一下就可以做到既防止表格/层撑破又防止单词断裂了。
    如下:
    代码

    table {
    table-layout: fixed;
    word-wrap:break-word;
    }
    div {
    word-wrap:break-word;
    }


    这也是现在我用的代码。
    -----------------------------------------------------

    根据 苏昱(Rainer Su) 的 CSS2中文手册

    word-break版本:IE5+专有属性 继承性:有
    语法:
    word-break : normal | break-all | keep-all
    取值:
    normal :  默认值。允许在词间换行
    break-all :  该行为与亚洲语言的 normal 相同。也允许非亚洲语言文本行的任意字内断开。该值适合包含一些非亚洲文本的亚洲文本
    keep-all :  与所有非亚洲语言的 normal 相同。对于中文,韩文,日文,不允许字断开。适合包含少量亚洲文本的非亚洲文本

    说明:
    设置或检索对象内文本的字内换行行为。尤其在出现多种语言时。
    对于中文,应该使用 break-all 。
    此属性对于 currentStyle 对象而言是只读的。对于其他对象而言是可读写的。
    对应的脚本特性为 wordBreak 。
    示例:
    div {word-break : break-all; }
    应用于:
    IE5.0+

    word-wrap版本:IE5.5+专有属性 继承性:有
    语法:
    word-wrap : normal | break-word
    取值:
    normal :  默认值。允许内容顶开指定的容器边界
    break-word :  内容将在边界内换行。如果需要,词内换行( word-break )也将发生

    说明:
    设置或检索当当前行超过指定容器的边界时是否断开转行。
    此属性仅作用于有布局的对象,如块对象。内联要素要使用该属性,必须先设定对象的 height 或 width 属性,或者设定 position 属性为 absolute ,或者设定 display 属性为 block 。
    此属性对于 currentStyle 对象而言是只读的。对于其他对象而言是可读写的。
    对应的脚本特性为 wordWrap 。
    示例:
    div { word-wrap: break-word; word-break: break-all; }


    注意这个
    break-word :  内容将在边界内换行。如果需要,词内换行( word-break )也将发生

    所以 word-wrap够用了,默认会不拆开单词换行,但是如果真有一个非常长的单词,比如上次某发错了版的史上最恐怖的12个英文单词,它也是会拆行的,这样避免了表格被撑坏。
    不过这个没有被w3c作为css2的标准,所以Mozilla 不支持这个属性,如果大家都好好写英文单词就没事情,Firefox也是不拆开单词换行的,如果碰到有人写很长的单词,Mozilla Firefox就不会换行一直撑破了。
    不知道css3会不会把这个属性接受进去,不过说实话,太BT的单词还好是...

    再说word-break: break-all;

    今天网友 Dcboy 和我提到一个Bug,他说他的编辑框变形了。后来我看了他的代码发现编辑框没有自动换行。被文章中的英文撑开了。

    于是我告诉他,让他在skin的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; }


    阅读(4505) 分享(0)

    上一篇: 什么是XSS攻击
    下一篇: 利用XMLHTTP实现表单的提交以及cookies或session的发送

  • 精彩推荐

    ◆ Win7的IIS7中ASP获得的系统日期格式为斜杠和去掉星期的解决办法
    ◆ 腾讯OA基础服务使用C# 开发的千万级应用
    ◆ 怎么做秒杀系统?秒杀系统设计
    ◆ 怎么设计比较安全的密码加密方法
    ◆ asp.net 用Stopwatch计算运行时间
    ◆ ASP.NET Eval四种绑定方式
    ◆ 安卓手机QQ新功能WiFi共享泄露用户隐私
    ◆ 我为什么不喜欢面向对象
    ◆ 老照片:马云、马化腾、李彦宏、刘强东、李开复,大佬们的罕见童年照
    ◆ 为什么刷单会被淘宝轻而易举的查到?
  • 用心做事 不能唯利是图

    • 吊儿
    • 用QQ联系我17905772
  • 搜索


  • 最新文章

    • 导出Excel 格式 mso-number-format
    • 服务器iis支持tls1.2,windows server 2008 r2 中IIS启用TLS 1.2(安装SSL后用TLS 1.2)
    • MySQL配置优化
    • EditPlus 添加文件比较工具winmerge
    • 滚动悬浮固定JS特效

  • 热门文章

    • php sso单点登录实现代码
    • 中国菜刀(China chopper) 最新黑客工具
    • redis.conf中文版(基于2.4)
    • 搜索引擎名单大全
    • php图片上传类,支持加水印,生成略缩图

  • 最新图库


  • 最新评论


  • 友情链接

  • 沙里软件

  • 最近访客

    Powered by ShaliSoft.com 豫ICP备13008529号

    免责声明:本站部分内容来源于互联网,转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责,也不构成任何其他建议。如果发现侵犯版权,联系QQ17905772进行删除。