ホームページ  >  記事  >  ウェブフロントエンド  >  シャドウ ルート要素のスタイルをオーバーライドするにはどうすればよいですか?

シャドウ ルート要素のスタイルをオーバーライドするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-12 22:41:02299ブラウズ

How to Override Styles in a Shadow-Root Element?

シャドウ ルート要素のスタイルのオーバーライド

Shadow DOM はスコープ内でスタイルを分離するため、グローバル CSS ルールを使用してスタイルを変更することが困難になります。これに対処するには、次の回避策を検討してください:

シャドウ ルートにスタイルを直接挿入:

新しいスタイル要素を作成し、その innerHTML に目的のスタイル変更を設定します:

var style = document.createElement('style');
style.innerHTML = '.the-class-name { property-name: my-value; }';

次に、スタイル要素をシャドウ ルートに追加します。

host.shadowRoot.appendChild(style);

注: この方法では、Shadow DOM が「オープン」モードに設定されている必要があります。 .

Chrome 73 および Opera 60 の機能強化:

これらのブラウザの最近のバージョンでは、CSSStyleSheet オブジェクトをインスタンス化し、Shadow DOM に直接適用できます:

var sheet = new CSSStyleSheet;
sheet.replaceSync(`.color { color: pink }`);
host.shadowRoot.adoptedStyleSheets.push(sheet);

注意: 特に SPA ページのリロード中は、同じスタイル シートを AdoptStyleSheets 配列に複数回追加しないでください。

以上がシャドウ ルート要素のスタイルをオーバーライドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。