text-decoration没有继承的原因是什么?

问题描述 投票:0回答:1

所以我已经阅读了之前关于这个主题的讨论,并且我知道文本装饰是传播的而不是继承的,但是spec没有说为什么。我试图更好地理解为什么会出现这种情况,以及为什么定位很重要。这种行为有什么好处?我对此感到惊讶,因为它不直观。 CSS 中还有其他我应该注意的示例吗?

html css inheritance properties text-decorations
1个回答
3
投票

考虑这个标记,它早于 CSS。

<strike>The <a href="http://example.com/">example</a> is here.</strike>

<strike>
默认为
text-decoration:line-through
,而
<a href="...">
默认为
text-decoration:underline
。在 CSS 出现之前,“example”这个词会带有下划线和删除线,因此 CSS 需要能够实现相同的效果。为此,规范编写者选择让
text-decoration
累积而不是继承。

另一种方法是为每个

text-decoration
值赋予其自己的属性。 CSS 之父 Håkon Wium Lie 在 1997 年 5 月向 www 风格的邮件列表发送的消息中解决了这个问题

没有简单的方法可以在不闪烁的情况下关闭眨眼 丢弃在 text-decoration 属性上设置的其他值。 这个 为了简洁而牺牲了——替代方案是 “text-decoration”上的所有值都有单独的二进制属性。

当时预计

text-decoration
将扩展到比最终拥有的四种装饰更多的东西 - 已经从规范草案中删除了一些

所以你知道了,CSS 的设计者当时并不希望属性激增。


很难证明这样的否定,但我不知道有任何其他属性以这种方式传播。

© www.soinside.com 2019 - 2024. All rights reserved.