Что правила приоритета CSS говорят о теге <style>
в теневой модели DOM?
У меня есть элемент <component class="component">
, файл CSS, включенный в <head>
, с:
component {
display: inline-block;
}
и тег <style>
внутри некоторого теневого DOM с:
::slotted(.component) {
display: block;
}
Если я правильно понимаю, первое правило должно иметь специфичность 0.0.1
, так как оно имеет один элемент, а второе — специфичность 0.1.1
, так как оно имеет один псевдоэлемент и один класс. Следовательно, второй является более конкретным и должен переопределять первый. Однако этого не происходит. В консоли разработчика (Chrome) я вижу оба правила, и ни одно из них не перечеркнуто, а на панели «вычисленные стили» я вижу «отображение: встроенный блок».
Более подробный пример по просьбе в комментариях:
<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>
[slot=...]::slotted(...)
- person egst   schedule 28.02.2019