Я пытаюсь работать только с ShadowDOM v1 (без Polymer или других веб-компонентов), но не могу заставить стиль работать с полифиллом.
Специальные селекторы CSS :host
и ::slotted
не работают.
Я пробовал с разными polyfills, но, честное слово, я немного запутался. Я видел этот вопрос, но он использует пользовательские элементы и шаблоны. Мой сценарий без них.
Может ли кто-нибудь помочь мне заставить этот код работать в Firefox или Edge? - в частности, вы должны увидеть три цвета: синий, красный и желтый, но работает только красный.
const shadowHtml =
`<style>
:host {
background: yellow;
}
.inside {
background: red;
margin: 10px;
}
::slotted(div[slot="content"]) {
background: blue;
color: white;
}
</style>
<div>
<p>i am yellow</p>
<div class=inside>i am red</div>
<slot name="content"></slot>
</div>`;
const root = document.querySelector('#root');
const shadow = root.attachShadow({ mode: 'open' });
shadow.innerHTML = shadowHtml;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Shadow DOM v1 Test</title>
<script src="https://rawgit.com/webcomponents/webcomponentsjs/v1/webcomponents-lite.js"></script>
</head>
<body>
<div id=root>
<div slot="content">
<p>I am blue</p>
</div>
</div>
</body>
</html>