【发布时间】:2018-06-29 05:45:20
【问题描述】:
我正在尝试使用连字符处理包含 <span> 元素的文本以突出显示。这似乎打破了连字符算法。有什么方法可以解决这种行为,以便连字符的放置与没有 <span> 元素的情况相同?
我不是在问像&shy;这样的解决方法
代码(沙盒:https://codepen.io/anon/pen/ayzxpM):
.limit {
max-width: 50px;
hyphens: auto;
font-size: 20px;
background-color: #eee;
}
span {
color: red;
}
<div class="limit">
<p>
Appletreefruitthing
</p>
<p>
Apple<span>tree</span>fruitthing
</p>
</div>
使用 lang 属性
按照 Vadim Ovchinnikov 的建议 (<div class="limit" lang="en">) 添加 lang 属性可以在某些平台/浏览器组合上获得更好的结果。在 Firefox 54、Windows 10 上,结果如下:
但即使这样似乎也有问题。在我看来,连字符应该是黑色的,连字符算法似乎错过了在“fruit”和“tree”之间换行的机会,也完全忽略了为容器设置的max-width。
【问题讨论】:
-
发生在哪个浏览器/操作系统中?在 Windows 上,Firefox 以相同的方式连接这两个词,不幸的是,Chrome 仍然存在doesn't support
hypens。此外,我必须将lang="en"设置为外部div才能使其在 Firefox 中工作。 -
顺便说一句,您想让它在所有浏览器中都能正常工作,还是只想知道为什么?
-
我看到您的示例中的连字符
p(不管内部span是否存在)在 Chrome、Firefox、IE 和 Edge (Win10) 中不起作用。 -
屏幕截图来自 OSX 上的 Chrome。 OSX 上的 Firefox Nightly 根本不起作用。理想情况下,解决方案可能会在任何地方都有效。
标签: css css-hyphens