【发布时间】:2021-11-12 09:51:17
【问题描述】:
我最近从 overflow-wrap 切换到 hyphens 用于在行之间换行。但是,我遇到了一个似乎无法在某个子字符串之前连字任何单词的情况。我不知道为什么会这样。
观察下面的 gif,要显示的完整字符串是 /people/type:astronauts/name-gregory-chamitoff/profile,但是当宽度小于大约 210px 时,子字符串 /people/type:astronauts/name- 中的任何单词都不会被连字符并推送到下一行。但是,超过210px 的连字符可以正常工作。这几乎就像将这个子字符串视为一个连续的单词。
.test {
font-size: 20px;
width: 210px;
/* adding this works but defeats the use of hyphens
overflow-wrap: break-word;
*/
hyphens: auto;
overflow: hidden;
background-color: white;
}
html {
background-color: black;
}
<div class="test">/people/type:astronauts/name-gregory-chamitoff/profile</div>
我发现解决此问题的唯一方法是使用下面类似的东西作为包罗万象的东西。然而,这很好,它不会优先考虑断字而不是断词。我正在寻找除此之外的其他解决方案,使hyphens 适用于所有或大多数字符串,甚至适用于这种情况!
.test {
overflow-wrap: break-word;
word-wrap: break-word;
word-break: break-all;
word-break: break-word;
hyphens: auto;
}
【问题讨论】:
-
不幸的是,规范没有定义断字规则,因此没有正确和不正确行为的定义。浏览器似乎认为
/people/type:astronauts/name和chamitoff/profile是牢不可破的,您无法更改它。 -
似乎提供软休息机会是目前唯一的选择。您可以在 DAO 层或服务器端将
/替换为/&shy;。 -
@onkarruikar 这对我来说是一个很好的解决方案。谢谢!
-
我猜
<wbr>在你的情况下甚至比&shy;更好:stackoverflow.com/a/41599344/6263942
标签: css word-wrap css-hyphens