【问题标题】:Firefox word-break for inline elements内联元素的 Firefox 分词
【发布时间】:2016-11-04 02:37:21
【问题描述】:

我正在尝试更改某些内联元素(例如 <span><a>)的 word-break 属性,以更好地显示页面内容。

似乎 Firefox 只识别显示为块的元素的分词属性(例如 <div>),而 Chrome 尊重分词的请求。

在下面的示例中,红色和蓝色部分在 Chrome 中呈现相同(xxxxx 被分成几行)。在火狐浏览器中,红框内的 xxxxx 溢出。

<div style="width:200px;background:red;">
  Hello <span style="word-break:break-all;">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span> World
</div>

<div style="width:200px;background:blue;word-break:break-all;">
  Hello <span>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span> World
</div>

上面的例子:https://jsfiddle.net/7scx4hfq/

哪个浏览器的行为正确?是 Firefox 的 bug 还是 Chrome 的 bug?

还有更重要的是,如何在所有浏览器中达到想要的效果?

注意,不能在块级别设置word-break:break-all

【问题讨论】:

  • 我总是对 50 个字母单词的用例感到困惑。你能想出一个实用的例子吗?
  • 用例是用合理的文本拼写出来的长链接。正常的分词只会在斜杠“/”处断开 URL,这会导致剩余单词出现非常大的难看间隙。见这里:jsfiddle.net/zL8ytno6 你会得到如此丑陋的链接,例如指向 Flickr 和 Google Drive 的链接。
  • @Paulie_D 用户输入的文字完全出乎意料。
  • @kaymes 我或多或少有同样的问题(见stackoverflow.com/questions/56465092/…)。在此期间您找到解决方案了吗?

标签: css firefox webkit word-break


【解决方案1】:

您可以尝试为 Firefox 添加额外的 word-wrap: break-word;

span {
  word-break: break-all; /* for others */
  word-wrap: break-word;  /* for Firefox */
}

如果要尽量保持所有文本在同一行,可以在容器上设置white-space: nowrap;,在span上重置为white-space: normal;。同样,这些设置仅适用于 Firefox。

div {
  background: yellow;
  width: 200px;
  white-space: nowrap;
}
span {
  background: aqua;
  word-break: break-all;
  word-wrap: break-word;
  white-space: normal;
}
<div>
  Hello <span>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span> World
</div>

jsFiddle

【讨论】:

  • 这会改变 span 的行为,使文本不再正常流动。在此示例中,它会导致在“Hello”之后和“World”之前出现换行符。见jsfiddle.net/7scx4hfq/1
  • 我在上面更新了它。注意“Hello”这个词不在里面,所以设置div和span的换行结果会不一样。
  • 断词具有相同的效果,额外的换行符,因为它仍然试图将尽可能多的词保持在一起。如果文本是合理的,这尤其是一个问题。 jsfiddle.net/7scx4hfq/3
  • 哪一个块是你想要的输出(在 Chrome 或 Firefox 中),你能附上图片吗?
  • 我追求的是Chrome上的红色版本:dropbox.com/s/eumky3zhdtlesa9/Selection_010.png?dl=0
猜你喜欢
  • 1970-01-01
  • 2017-04-07
  • 2016-04-21
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 2015-12-29
  • 2020-12-21
相关资源
最近更新 更多