1. このページの目的
Web Components において、単独のCSSファイルを Shadow DOM で利用してみる。
2. デモ
@import
を使えばよい。
<my-app></my-app>
<p>これは Shadow DOM の外にあるメッセージです。Shadow DOM 内に記述したCSSの影響を受けず、黒色のま
まのはずです。</p>
<script type="module">
import MyApp from './my-app.js';
window.customElements.define('my-app', MyApp);
</script>
export default class extends HTMLElement {
constructor() {
super();
const shadowRoot = this.attachShadow({mode: 'open'});
shadowRoot.innerHTML = `
<style>
@import './my-app.css';
</style>
<p name="message">これは、Shadow DOM の中にあるメッセージです。Scoped CSS によって、赤色になっているはずで
す。</p>
`;
}
}
:host {
display: block;
contain: content;
}
p {
color: red;
}
これは Shadow DOM の外にあるメッセージです。Shadow DOM 内に記述したCSSの影響を受けず、黒色のままのはずです。
3. メモ
- Shadow DOM 内の CSS に Sass などを使いたい場合は、.scss ファイルを .css ファイルに変換し、そのファイルを
@import
でインポートすればよい。
4. 参考
- 特になし