当前位置:  开发笔记 > 前端 > 正文

CSS中"word-break:break-all"与"word-wrap:break-word"之间的区别是什么?

如何解决《CSS中"word-break:break-all"与"word-wrap:break-word"之间的区别是什么?》经验,为你挑选了9个好方法。

我目前想知道两者之间有什么区别.当我使用它们时,如果它不适合容器,它们似乎打破了这个词.但为什么W3C有两种方法呢?



1> Bhumi Singha..:

word-wrap: break-word 最近改为 overflow-wrap: break-word

将长单词包装到下一行.

调整不同的单词,使它们不会在中间突破.

word-break: break-all

无论是连续的单词还是多个单词,都要在宽度限制的边缘将它们分开.(即使在同一个词的字符内)

因此,如果你有许多固定大小的跨度来动态获取内容,你可能只是喜欢使用word-wrap: break-word,因为只有连续的单词在它们之间被打破,并且如果它是包含许多单词的句子,则调整空格以获得完整的单词(一句话内没有中断).

如果没关系,那就去吧.


为什么不接受这个?这个答案对大多数用户更有帮助.CJK行为仅适用于非常国际的网站.
@MarioDS它适用于"非常国际的网站",或者,正如世界上20%的人称之为"网站"
简短但甜蜜的回答!虽然您可能希望将自动换行更改为overflow-wrap?

2> AakashM..:

谈论这些的W3规范似乎暗示word-break: break-all要求使用CJK(中文,日文和韩文)文本的特定行为,而word-wrap: break-word更普遍的,非CJK感知的行为.


另请注意,自动换行是规范中较新属性"overflow-wrap"的遗留名称.http://www.w3.org/TR/css3-text/#overflow-wrap
简单地说:"[`word-break`](http://www.w3.org/TR/css3-text/#word-break-property)指定字母之间的软包装机会......"W3C规范使用CLK文本*作为一个例子*,但这不是它唯一的预期用途.当你希望它们在容器宽度处断开时,常常使用`word-break`和长字符串(例如URL或代码行) - 尤其是当容器是`pre`元素或表格单元格时[`word-wrap`](http://www.w3.org/TR/css3-text/#word-wrap)属性[可能无法按预期工作](http://stackoverflow.com/a/19282567/ 2502532).
自动换行:break-word - >不会断开表---- word-break:break-all - > break tables table

3> 小智..:

随着word-break,一个很长的词开始于它应该开始的点,并且只要需要它就会被打破

[X] I am a text that 0123
4567890123456789012345678
90123456789 want to live 
inside this narrow paragr
aph.

然而,有word-wrap一个很长的词不会从应该开始的那一刻开始.它包裹到下一行,然后在需要时被打破

[X] I am a text that 
012345678901234567890123
4567890123456789 want to
live inside this narrow 
paragraph.


如果你使用`break-word`,情况仍然如此.我恼人地发现`word-break`打破了网址而不是"自动换行".两个使用`break-word`都来自http://css-tricks.com/snippets/css/prevent-long-urls-from-breaking-out-of-container/

4> Jon Schneide..:

至少在Firefox(自v24起)和Chrome(截至第30版)中,当应用于table元素中的内容时:

word-wrap:break-word

实际上不会导致长词包装,这可能导致表超出其容器的界限;

word-break:break-all

导致单词换行,并且表格适合其容器.

在此输入图像描述

jsfiddle演示.


当使用`word-wrap:break-work`时,你可以使用`table-layout:fixed`来使表不展开
我通过在表格上添加宽度(100%)或将容器的80px宽度移动到表格来实现它.http://jsfiddle.net/SDGAX/37/使用`table-layout:fixed`表的行为不一样
在Firefox中使用`word-wrap`和`pre`标签时也会发生这种情况,除非它们定义了固定的宽度.使用`word-break`会产生所需的结果.我在上面发布的评论中链接到了这个答案,因为它演示了一个常见的用例.

5> André Pena..:

word-wrap已被重命名为overflow-wrap可能避免这种混乱.

现在这就是我们所拥有的:

溢出包装

所述溢流缠绕属性用来指定浏览器是否可能破裂字线内,以防止溢出当否则牢不可破字符串太长,以适应其容纳箱.

可能的值:

normal:表示行只能在正常的断点处中断.

break-word:表示如果行中没有其他可接受的断点,通常不可破坏的单词可能会在任意点被破坏.

来源.

字断

字断 CSS属性用于指定是否断词内行.

normal:使用默认换行符规则.

break-all:可以在非CJK(中文/日文/韩文)文本的任何字符之间插入单词分隔符.

keep-all:不允许CJK文本的分词.非CJK文本行为与正常情况相同.

来源.


现在回到你的问题,overflow-wrapword-break之间的主要区别在于,第一个确定溢出情况下的行为,而后者确定正常情况下的行为(无溢出).一个溢出的情况发生时,容器没有足够的空间来容纳文本.在这种情况下断线并没有帮助,因为没有空间(想象一个具有固定宽度和高度的盒子).

所以:

overflow-wrap: break-word:在溢出的情况下,打破这些话.

word-break: break-all:在正常情况下,只需打破行尾的单词即可.不需要溢出.


优秀的解释.我刚才遇到的一个例子:表格单元格中的长词.`overflow-wrap` /`word-wrap`没有让它们换行.大概是因为没有固定宽度的表格单元扩展而不是溢出.相反,桌子变得宽阔并与其他元素相撞.另一方面,`word-break`修复了它.

6> Jonny Haynes..:

这是我能找到的全部.不确定它是否有帮助,但我想我会把它添加到混合中.

WORD-WRAP

此属性指定当内容超出元素的指定呈现框的边界时当前呈现的行是否应该中断(这在某些方面类似于intent中的'clip'和'overflow'属性.)此属性应仅适用如果元素具有可视化渲染,则是具有显式高度/宽度的内联元素,绝对定位和/或是块元素.

WORD-BREAK

此属性控制单词中的换行行为.在元素中使用多种语言的情况下,它尤其有用.



7> Ehsan..:

word-break:break-all :

单词继续边界然后在换行符中断.

word-wrap:break-word :

首先,换行中的自动换行然后继续边界.

示例:

div {
   border: 1px solid red;
   width: 200px;
}

span {
  background-color: yellow;
}

.break-all {
  word-break:break-all;
 }
.break-word {
  word-wrap:break-word;  
}
word-break:break-all

This text is styled with soooooooooooooooooooooooooome of the text formatting properties.
word-wrap:break-word
This text is styled with soooooooooooooooooooooooooome of the text formatting properties.


8> Serge Stroob..:

从相应的W3规范 - 由于缺乏上下文而恰好不太清楚 - 可以推断出以下内容:

word-break: break-all 是用于在CJK(中文,日文或韩文)字体着作中打破外国的,非CJK(比如西方)的话.

word-wrap: break-word 是用于非混合(简单地说是西方语言)语言中的单词破解.

至少,这些是W3的意图.实际发生的事情是导致浏览器不兼容的主要蠢事.以下是对所涉及的各种问题的精彩描述.

以下代码段可以作为如何在跨浏览器环境中使用CSS实现自动换行的摘要:

-ms-word-break: break-all;
 word-break: break-all;

 /* Non standard for webkit */
 word-break: break-word;

-webkit-hyphens: auto;
   -moz-hyphens: auto;
    -ms-hyphens: auto;
        hyphens: auto;



9> Drkawashima..:

很大的不同。break-all基本上无法用于呈现可读文本。

假设您将字符串This is a text from an old magazine放在一个容器中,该容器每行只能容纳6个字符。

word-break: break-all
This i
s a te
xt fro
m an o
ld mag
azine

如您所见,结果非常糟糕。break-all会尝试将尽可能多的字符放入每行中,甚至会将“ is”之类的2个字母单词分成两行!太荒谬了 这就是为什么 break-all很少使用的原因。

word-wrap: break-word
This
is a
text
from
an old
magazi
ne

break-word只会破坏太长而无法容纳容器的单词(例如“ magazine”,即8个字符,而容器仅容纳6个字符)。它永远不会破坏可能适合整个容器的单词,而是会将它们推到新的一行。

This i
s a te
xt fro
m an o
ld mag
azine
推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有