Тот же самый ответ, который я дал в вашем вопросе вчера
Слот-контент не перемещен в shadowDOM,
it остается (невидимым) в lightDOM
и ОТРАЖАЕТСЯ в shadowDOM <SLOT>
Так что стилизация SLOTTED выполняется в CSS область, в которой находится <custom-element>
.
или ::slotted( x )
Из документов :
:: slotted может только возьмите составной селектор (в скобках). Причина этого ограничения заключается в том, чтобы сделать дружественный по отношению к стилю движок селектором с точки зрения производительности.
Итак, с вашей структурой вы можете делать:
::slotted(.heading) { }
or
::slotted(:first-child) { }
, но не:
::slotted(.heading:first-child)
Поскольку это сложный селектор, а не (простой) составной селектор
Таким образом, ваши заголовки могут быть стилизованы в глобальном CSS и будут REFLECT к слот-контенту:
my-element div.heading{
background:blue;
color:white;
}
Если вы хотите инкапсулировать этот стиль, вам нужно обернуть все в (другой) компонент
Вы можете настроить таргетинг на all Неименованный слот-контент :
::slotted(:not([slot])){
font-weight:bold;
}
Вот еще один JSFiddle для игры со стилевым слотом:
https://jsfiddle.net/CustomElementsExamples/aLezyh35/