【发布时间】:2019-07-19 22:16:07
【问题描述】:
CSS 优先规则对 shadow DOM 中的 <style> 标记有何规定?
我有一个元素 <component class="component">,这是一个包含在 <head> 中的 CSS 文件,其中包含:
component {
display: inline-block;
}
还有一个影子 DOM 中的 <style> 标签:
::slotted(.component) {
display: block;
}
如果我理解正确,第一条规则应该具有0.0.1 的特异性,因为它有一个元素,第二个规则的特异性应该是0.1.1,因为它有一个伪元素和一个类。因此,第二个更具体,应该覆盖第一个。虽然这不会发生。在开发人员控制台 (Chrome) 中,我看到了这两个规则,它们都没有被划掉,在“计算样式”面板中,我看到“显示:内联块”。
cmets 中要求的更详细示例:
<head>
<style>
/* "other-component" related styles: */
other-component {
display: inline-block;
}
</style>
</head>
<body>
<some-component>
#shadow-root:
<style>
slot[name=some-slot]::slotted(*) {
display: block; /* Only works with !important. */
}
</style>
<slot name="some-slot"></slot>
<!-- The actual ("light-dom") content: -->
<other-component slot="some-slot"></other-component>
</some-component>
</body>
【问题讨论】:
-
不,我的意思是开槽 - 以 :host 内部的元素为目标,并带有一些槽属性。我简化了一下,原来的选择器是
[slot=...]::slotted(...) -
那么Shadow DOM是怎么定义的,light DOM里有什么?
-
什么意思?您是在询问“shadow DOM”的确切定义吗?
标签: css shadow-dom css-specificity