所以我已经阅读了之前关于这个主题的讨论,并且我知道文本装饰是传播的而不是继承的,但是spec没有说为什么。我试图更好地理解为什么会出现这种情况,以及为什么定位很重要。这种行为有什么好处?我对此感到惊讶,因为它不直观。 CSS 中还有其他我应该注意的示例吗?
考虑这个标记,它早于 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 的设计者当时并不希望属性激增。
很难证明这样的否定,但我不知道有任何其他属性以这种方式传播。