好的,所以我知道这是一个老问题,但我认真地认为,何时使用哪个属性可能会有一些有用的说明。看看现有的答案,我觉得他们提供了没有解释的解决方案,所以这是我试图帮助解决的问题。对于上下文,默认情况下,容器不会尝试拆分单个长单词,因为它希望将单词保留为原始形式。
话虽如此,分解单词的 3 种主要方法是overflow-wrap
、word-break
和hypens
。不过,我不会深入研究炒作。
所以先下手。我看到word-wrap
问题中正在使用但阅读文档,该文档已被弃用,并且一些浏览器已决定将其简单地别名为overflow-wrap
. 可能最好不要使用它。
这两个属性之间的区别在文档中非常清楚,但为了清楚起见,overflow-wrap
实际上只有两个可能的值,并且会检测单词是否溢出。如果是这样,默认情况下它会将整个单词移动到下一行。如果break-word
设置,它只会在整个单词不能放在该行上时分解单词。
#fos { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size:14px;
font-weight: normal;
line-height: 18px;
width: 238px;
height:38px;
cursor: pointer;
overflow-wrap: break-word;
border:2px solid; }
#sp { }
<div id="fos">
<span id="sp">The longest word ever: pneumonoultramicroscopicsilicovolcanoconiosis and then some.</span>
</div>
您可以看到 pneumonoul... long 单词在它尝试分隔长单词后在下一行所需的位置完全中断。
现在相比之下,我们有word-break
. 这具有更精细的属性,实际上也有一个break-word
选项。这与上面的代码片段是同义的,所以我认为何时使用其中一个非常简单。
但是,word-break
它还提供了一个break-all
值,该值将尽可能地打破单词以适应最初预期的单词。它不会试图弄清楚它是否需要将单词放在新行上——它只是将换行符推到它溢出的地方。这里与上面最大的区别是我们使用的长词现在仍然在顶部。
#fos { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size:14px;
font-weight: normal;
line-height: 18px;
width: 238px;
height:38px;
cursor: pointer;
word-break: break-all;
border:2px solid; }
#sp { }
<div id="fos">
<span id="sp">The longest word ever: pneumonoultramicroscopicsilicovolcanoconiosis and then some.</span>
</div>
然后终于forhyphens
有自己特殊的分手方式了。有关更多信息,请查看文档。还值得注意的是,不同的语言有不同的分解词的方式,但幸运的是hyphens
属性挂钩到lang
属性并理解该做什么。
人们建议的另一个选择是使用white-space
试图通过空格分隔文本的属性。在我使用的示例中,这对我们的情况没有帮助,因为单词本身比容器长。我认为关于这个 CSS 属性需要注意的重要一点是,它不会尝试分解单词本身,而是尝试在适当的时候通过空格来实现。
#fos { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size:14px;
font-weight: normal;
line-height: 18px;
width: 238px;
height:38px;
cursor: pointer;
white-space: normal;
border:2px solid; }
#sp { }
<div id="fos">
<span id="sp">The longest word ever: pneumonoultramicroscopicsilicovolcanoconiosis and then some.</span>
</div>
希望这可以帮助。