溢出包装和断字之间的区别?


81

overflow-wrap/word-wrap和之间的确切区别是word-break什么?有人可以告诉我打破长链接的更好的方法吗?大多数人说您应该将断字与结合使用,overflow-wrap但看起来不太合逻辑。我认为overflow-wrap结合使用以word-wrap获得更好的跨浏览器支持是最好的方法。你怎么看?


6
对于任何可能最初对为什么将其作为重复的问题都封闭起来感到困惑的未来读者。的CSS文本模块级别3指出overflow-wrapword-wrap应该在功能100%相同。就个人而言,我得到的印象是word-wrap仅应用于旧版浏览器支持,并且在以后的CSS版本中可能不推荐使用或删除它。
泰勒·克伦普顿

22
对于那些投票决定关闭此文件的人:这不是说的重复,问题也不一样。据称重复是关于两个属性的两个特定值,而这个问题是关于两个属性的。我真的不喜欢某些人相信有权禁止其他人回答问题。如果您不喜欢这个问题,那就不要阅读它!
Hibou57

3
@Tyler康普顿你是混淆word-wrapword-break
catamphetamine

1
我同意Hibou57。这不是重复项。不幸的是,它已经关闭,因为很难在线找到该问题的答案。
Paul-Hebert

@TylerCrompton这个问题不是关于word-wrap。这是关于word-break。将其作为重复的问题结束是没有意义的。
孤独的学习者

Answers:


64

从源报价

  • 自动换行:自动换行CSS属性用于指定浏览器是否可以在单词内换行,以防止在其他情况下坚不可摧的字符串太长而无法容纳其包含框时溢出。

  • overflow-wrapword-wrap属性已overflow-wrap在CSS3 Text规范的当前草案中重命名

  • 断字:断字CSS属性用于指定如何(或是否)在字内断行

因此,您需要将断字与自动换行结合使用,这是正确的组合。


好,是的word-wrap就足够了,但是如果容器的宽度受到限制,则布局可能会混乱。
karthikr 2013年

好的我明白了。我只对链接使用自动换行,因此布局不会中断。
Anselm 2013年

7
找到了一个答案:“谈论这些的W3规范似乎暗示了断字:全部中断是为了要求CJK文本具有特定的行为,而换行:断字是更通用的,非CJK-知道,行为。” (stackoverflow.com/questions/1795109/…)CJK是中文,日文和韩文的统称。
Anselm 2013年

哦。但我认为您的问题完全不同。无论如何,很高兴您找到了答案,我相信我会有所帮助
karthikr

4
自动换行是一种过时的Microsoft扩展(即使大多数浏览器将它实现为无前缀属性),现在也已被溢出自动换行。MDN将两个不同的页面合并为一个页面:developer.mozilla.org/en-US/docs/Web/CSS/overflow-wrap
CharlesM

6

这有助于理解,这word-break: break-word实际上是的别名overflow-wrap: anywhere

word-break: break-word已正式弃用;参见CSS Text Module Level 3 Working Draft

为了与旧内容兼容,该word-break属性还支持不推荐使用的break-word关键字。当指定时,这具有相同的效果word-break: normaloverflow-wrap: anywhere,无论溢出缠绕属性的实际价值。

这里要注意的 word-break: break-word是的别名overflow-wrap: anywhere,而不是的别名overflow-wrap: break-word

word-break: normal这只是的默认值word-break,因此您可以忽略它,除非您为设置了其他值word-break。)

如何overflow-wrap: anywhereoverflow-wrap: break-word不同?

两者之间唯一的区别是,overflow-wrap: anywhere在“计算最小含量的内在尺寸”时“确实考虑了单词中断带来的软包装机会”,而overflow-wrap: break-word没有。

我想如果考虑宽度,在某些情况下宽度可能会更准确?


5

确切的区别如下:(基于Chrome v81的测试,并通过参考规格确认了我的观察)

空格

normal(默认):折叠空白链和换行符;在需要的地方添加换行符
nowrap:折叠空白链和换行符;不添加换行符
pre-line:折叠空白链;在需要的地方添加换行符
pre-wrap:不崩溃;在需要的地方添加换行符
break-spaces:与预包装相同,但空格能够触发换行符添加
pre:不崩溃;不添加换行符

注意:如果所选white-space值列出“不添加换行符”,则以下属性的换行行为将无法应用(即,被忽略)。

断字

normal(默认值):在容器内最后一个单词拟合的末尾处断行[如果存在],否则行不间断
break-word:在容器内最后一个单词拟合的末尾处断行[如果一个存在],否则在容器末尾
break-all:在容器末端[即使附近有空格也可以拆分一个字]

溢出包装(旧名称:自动换行)

normal(默认值):在容器内最后一个单词拟合的末尾处断行[如果存在],否则行不间断
break-word:在容器内最后一个单词拟合的末尾处断行[如果存在],否则在容器末尾处断行[如果不存在] -flex容器],否则行保持不中断
anywhere:在容器内最后一个单词拟合的末尾处断行(如果存在),在容器末尾处断行(与word-break: break-word]相同)

请注意,对于overflow-wrap: break-word(对于任何使行对于容器来说太长的组合),不间断的行会导致伸缩容器超出指定的伸缩率(迫使其他伸缩容器收缩以解决内容太长)。


基于您说“基于文档”的事实,我假设此内容很大程度上是从某处复制的?因此,通常对内容只是皱着眉头,而其他地方只是内容的纯复制品而感到皱眉,但是无论哪种方式,在复制内容时都必须引用源,以避免抄袭。另外,在Chrome中进行测试很难确定某些内容是否符合规范的要求。
TylerH

1
@TylerH不是(甚至接近)其他地方的内容副本。大部分行为描述均来自我在Chrome中的直接测试,并参考了文档页面,只是为了确认我观察到的行为与规范相符,并确保我不会错过其他行为。与窃相去甚远。(我将更新顶部的注释以进行澄清)
Venryx
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.