【发布时间】:2021-08-29 11:16:20
【问题描述】:
我认为伪类从它们的父元素继承属性,但实际上父元素似乎专门选择了它的所有伪类,即使它们没有被指定。
例如,给定 HTML:
<a href="#" id="id-selector">ok</a>
和 CSS:
#id-selector {
color: green;
}
a:any-link {
color: red;
}
我认为 color: green 只会被伪类 any-link继承,因此会被 a:any-link 覆盖 选择器,因为这是伪类的特定选择器,并且特定选择器会覆盖继承的属性,即使它们具有较低的特异性。但是上面的输出是一个绿色的链接,说明#id-selector是专门针对any-link的,而不是被继承的。
具有较低特异性的特定选择器覆盖具有较高特异性的继承属性的示例:
HTML -
<div id="id-has-high-specificity">
<h1 class="class-has-low-specificity">Heading</h1>
</div>
CSS -
.class-has-low-specificity {
color: green;
}
#id-has-high-specificity {
color: red !important;
}
这里的输出是绿色的,这是预期的,因为标题只是从第二条规则继承而来,而是由第一条规则专门选择的。
我认为这同样适用于伪类,因为伪类从其父元素继承。但从我的第一个示例看来,它们没有,而是父元素专门选择它的所有伪类,即使它们没有被指定。
那么是不是伪类不从其父元素继承任何属性,而是父元素在定义规则时专门设置其所有伪类,即使没有指定那些伪类?
【问题讨论】:
-
您能否在您的问题中加入一个有效的 sn-p,以便我们自己查看问题?
-
嗨@AHaworth 实际上这是唯一的代码。我正在尝试通过第一原理从头开始学习 CSS,并且只想全面了解伪类继承的工作原理
-
你能描述一下 CSS 中的 :any-link 是什么吗?如果您想选择存在的属性 href 但任何链接的语法是 [href],而不是伪类 - 那么您必须考虑其他一些伪类?
-
:any-link 将引用两个标签之间的“ok”内容。实际上,如果我们制作选择器#id-selector[href] 和a[href]:any-link,根据我的理解应该会发生同样的事情,前一个选择器仍然获得所有伪类的优先级。我使用 any-link 只是为了说明,实际上我会使用伪类,例如 :visited,例如
标签: css