• 十大城市二手房市场“整体降温”态势难改 2019-05-18
  • 阳泉首次颁布地方实体性法规 两部法规将于7月1日起实施 2019-05-17
  • 江西居民年献血量从2吨增至128吨 2019-05-17
  • 科学健身有原则 牢记要点是关键 2019-05-16
  • 忆王府井时期的文体生活 2019-05-16
  • 任志强:房价走势并不是不可预测市场 开炮 2019-05-16
  • 妹妹半个多世纪前嫁到安徽 八旬老人想再见她一面 2019-05-16
  • 聚焦两会:委员建言关注乡村留守儿童身心健康 2019-05-15
  • 资管新规来了!打破刚兑  投资者怎么办? 2019-05-11
  • 【大考2018】2018高考首日众生相(组图) 2019-05-11
  • 【理上网来·辉煌十九大】高通公司首席执行官:中国将从“制造大国”转变为“创新大国” 2019-05-03
  • 《中国教育报》电子版 2019-05-03
  • 哈儿,既然已经按需分配了,也就是说,你的自我实现需求也都满足了,那按劳分配的那一部分有何必要?只要不哈,就知道你的天一句【按需分配】地一句【按劳分配】逻辑不通也 2019-05-02
  • 国务院关税税则委员会发布关于对原产于美国500亿美元进口商品加征关税的公告 2019-04-27
  • 鞋垫3个月没洗太熏人,只需用它一泡,鞋垫立马洁净如新,快试试 2019-04-27
  • 您好,欢迎访问我们的网站!
    24小时服务热线: 18201857860
    广西快3开奖走势 >> 前端开发 >>

    广西快乐十分开奖搜索:CSS攻略强制换行与强制不换行

    广西快3开奖走势 www.hbsye.com

    浏览:120次

    时间:2017年05月25日

      强制换行与强制不换行问题曾经一度困扰着我,每当遇到换行问题时候那就是痛苦回忆的开始,现在终于痛定思痛,一鼓作气把这个长期顽固问题给解决。

      强制换行与强制不换行用到的属性

      我们一般控制换行所用到的CSS属性一共有三个:word-wrap; word-break; white-space。这三个属性可以说是专为了文字断行而创造出来的。首先我们得知道这三个属性到底是做什么用地:

      word-wrap语法:

      word-wrap: normal(默认) | break-word

      各个浏览器均能识别

      参数:

      normal: 允许内容顶开指定的容器边界。

      break-word: 内容将在边界内换行。必要时会触发word-break(注意:请分辨清楚word-break和break-word这俩个是不同的东西,一为属性另为参数)。

      说明:

      word-wrap是控制是否“为词断行”的,设置或检索当前行超过指定容器的边界时是否断开转行。中文没有任何问题,英文语句也没问题。但是对于长串的英文,就不起作用。

      范例:

      congratulation这个单词属于长串英文,word-wrap:break-word整个单词看成一个整体,如果该行末端宽度不够显示整个单词,它会自动把整个单词放到下一行,而不会把单词截断,这就是对于长串文字不起作用的解释。word-wrap:normal是默认情况,英文单词不被拆开。

      结论:

      作用范围仅为div这类标准块级元素,th,td这类table元素虽然识别但是没有效果(如果为td,th加上宽度word-wrap在IE下是能够发挥效果的,但根据完全兼容性方便记忆角度上来说还是以前面的结论为准)。

      word-break语法:

      word-break: normal(默认) | break-all | keep-all

      Firefox、Opera不能识别

      参数:

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

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

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

      说明:

      word-break:break-all,是断开单词。在单词到边界时,下个字母自动到下一行。主要解决了长串英文的问题(恰恰弥补了上面word-wrap:break-word对于长串文字不起作用的缺陷)。

      范例:

      继续以上面congratulation这个单词属于长串英文,word-break:break-all它会把单词截断,该行末端就会变成类似conra(congratulation的前端部分),下一行为tulation(conguatulation)的后端部分了。

      word-break:keep-all,是指Chinese, Japanese, and Korean不断词。即只用此时,不用word-wrap,中文就不会换行了。(英文语句正常。)

      结论:

      作用范围仅为div这类标准块级元素,th,td这类table元素虽然识别但是没有效果(经测试Chrome下word-break:break-all是有效果的,但根据完全兼容性方便记忆角度上来说还是以前面的结论为准)。Firefox,Opera是无法识别word-break的,更不用提Firefox下的th,td中使用word-break的效果了。

      white-space语法:

      white-space: normal(默认) | pre | nowrap

      参数:

      normal: 默认??瞻谆岜讳榔骱雎?。

      pre: 空白会被浏览器保留。其行为方式类似HTML中的pre标签。

      nowrap: 文本不会换行,文本会在在同一行上继续,直到遇到br标签为止。

      说明:

      对于pre属性,其实就是HTML中连续的多个空白符会被合并,然后为了不让他合并(最常用的场合就是表示代码文字缩进)让其中的空白符继续保留而不需要我们增加额外的样式和标签来控制它的缩进和换行。pre标签的原理也是一样的内部默认有了个white-space:pre。

      对于nowrap属性,这个是强制不换行核心,一般强制不换行就是利用这个属性。Firefox的div和td中,以及IE的div中,均没有问题。唯一的瑕疵就是在IE的td中会有一个问题,如果td没有指定宽度,则nowrap仍然有效,如果td有宽度,并且文字中无标点、无空格(例如中文长串文字),nowrap则不再有效。解决方式就是可以加word-break:keep-all;可以解决此问题。

      总结强制换行:

      如果在div这类标准块级元素中需要强制换行,最普遍的方案那就是word-wrap:break-word; word-break:break-all;此方式的缺点就是会导致如果恰巧该行末端宽为一个长串英文单词,那么该单词会被撕开的尴尬样式(而且FF不识别word-break,反而不会撕开这个单词)。个人认为如果你这个div里面放的类似于URL这个长串地址,那么用此方案是非常不错的选择(注意:由于FF不识别word-break,所以无法保证每行末端会整齐的断开URL单词,但这也是无奈的选择)。如果不是放置URL这类可以断开的长串英文,而是英文句子的话,那么使用word-wrap:break-word;即可。至于网上看到有word-wrap:break-word; overflow:hidden;这么个写法,据说可以兼容IE和FF,但经过亲自测试似乎没有什么特别效果。当然,如果你有更好的方案也可以留言参与讨论,这里也十分欢迎您的意见。

      如果是在td,th这类table元素中需要强制换行,个人比较推荐的方式为:先为table设定table-layout:fixed?;旧仙瓒ㄍ暾飧鍪粜院蠡镜幕恍形侍舛寄芄唤饩龆换岢鱿謙able中td,th因为里面各个内容的多寡发生抢夺其他td,th宽度的情形发生。这时如果你依旧有强制换行问题,那么在此td中内部加一层div,那么情况就会像上面讨论的方式来解决。

      总结强制不换行:

      强制不换行的问题到是比较容易分析的,就如上面所讨论的那样使用white-space:nowrap,Firefox的div和td中,以及IE的div中,均没有问题。唯一的瑕疵就是在IE的td中会有一个问题,如果td没有指定宽度,则nowrap仍然有效,如果td有宽度,并且文字中无标点、无空格(例如中文长串文字),nowrap则不再有效。解决方式就是可以加word-break:keep-all;可以解决此问题。综合下来,比较稳妥的方式是在文字与td之间再套一层div,然后使用nowrap,那么就是强制不换行。注意这时候很有可能文字会过多导致溢出容器,所以你还得加一个overflow:hidden,防止溢出容器,这样子就可以兼容各个浏览器了。

      总结了那么多,发觉似乎也就那几个属性在浏览器里面的各种兼容性的平衡,现在似乎尚未有一个完美的方案可以全部兼容各个浏览器,我们所能做的最多的就是尽可能的保持个浏览器显示一致。如果你还是觉得一定要兼容所有的浏览器,那么最后的方案那么就是动用JS了,以后的文章中我会考虑从以最小的JS代价来满足此要求,但这暂不在本文所讨论的范围内。

  • 上一篇:10个常用的css技巧
  • 下一篇:div怎么样显示滚动条 div显示滚动条的CSS代码
  • ?

    联系我们

    上海旭日升网络科技有限公司
    联系人:张经理
    手 机:182-0185-7860
    微 信:158-6237-2961
    Q Q :952334321
    邮 箱:[email protected]
    网 址:广西快3开奖走势 www.hbsye.com
    地 址:上海市普陀区曹杨路3000号长城大厦1703
    ?
  • 十大城市二手房市场“整体降温”态势难改 2019-05-18
  • 阳泉首次颁布地方实体性法规 两部法规将于7月1日起实施 2019-05-17
  • 江西居民年献血量从2吨增至128吨 2019-05-17
  • 科学健身有原则 牢记要点是关键 2019-05-16
  • 忆王府井时期的文体生活 2019-05-16
  • 任志强:房价走势并不是不可预测市场 开炮 2019-05-16
  • 妹妹半个多世纪前嫁到安徽 八旬老人想再见她一面 2019-05-16
  • 聚焦两会:委员建言关注乡村留守儿童身心健康 2019-05-15
  • 资管新规来了!打破刚兑  投资者怎么办? 2019-05-11
  • 【大考2018】2018高考首日众生相(组图) 2019-05-11
  • 【理上网来·辉煌十九大】高通公司首席执行官:中国将从“制造大国”转变为“创新大国” 2019-05-03
  • 《中国教育报》电子版 2019-05-03
  • 哈儿,既然已经按需分配了,也就是说,你的自我实现需求也都满足了,那按劳分配的那一部分有何必要?只要不哈,就知道你的天一句【按需分配】地一句【按劳分配】逻辑不通也 2019-05-02
  • 国务院关税税则委员会发布关于对原产于美国500亿美元进口商品加征关税的公告 2019-04-27
  • 鞋垫3个月没洗太熏人,只需用它一泡,鞋垫立马洁净如新,快试试 2019-04-27
  • 快乐8官网 福建快3开奖结果 12生肖时时彩开奖结果 盛兴彩票网 北京福彩中心网站 搜狐彩票代理 怎么看五分彩走势图 pk10交集容错 内蒙古时时彩 pk10开奖记录 福彩3d和值走势图 北京赛车pk10软件制作 北京赛车pk计划 竞彩篮球大小分规则 下载玩彩票软件 报码室开奖结果