Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah Saya Boleh Mengatasi Gaya dalam Elemen Shadow-Root?

Bagaimanakah Saya Boleh Mengatasi Gaya dalam Elemen Shadow-Root?

Patricia Arquette
Patricia Arquetteasal
2024-11-14 20:39:02152semak imbas

How Can I Override Styles in a Shadow-Root Element?

Gaya Mengatasi dalam Elemen Akar Bayang

Salah satu ciri utama Shadow DOM ialah pengasingan gayanya. Ini menghalang peraturan CSS luaran daripada menjejaskan elemen dalam akar bayang, memastikan pengkapsulan dan modulariti. Walau bagaimanapun, ia juga memberikan cabaran apabila anda perlu mengatasi gaya yang ditakrifkan dalam akar bayang.

Isunya

Mengikut pertanyaan anda, anda cuba menulis ganti Sifat CSS ditakrifkan dalam elemen akar bayang, khususnya dalam kelas bernama .the-class-name. Walau bagaimanapun, anda tidak dapat mencapai ini tanpa memanipulasi secara langsung gaya akar bayangan dalam alatan pembangunan.

Masalahnya

Kaedah tradisional untuk mengatasi peraturan CSS, seperti menggunakan peraturan CSS global atau :pemilih hos, tidak berfungsi dengan elemen berakar bayang kerana pengasingannya. Shadow DOM menghalang peraturan CSS global daripada bocor ke dalam skopnya dan :pemilih hos hanya digunakan pada elemen yang mengehos akar bayang, bukan pada elemen dalam akar bayang.

Penyelesaian

Nasib baik, terdapat penyelesaian yang membolehkan anda menyuntik gaya baharu ke dalam akar bayangan terus:

var host = document.querySelector('host-element'); // The element that holds the shadow root
var style = document.createElement('style');
style.innerHTML = '.the-class-name { property-name: my-value; }';
host.shadowRoot.appendChild(style);

Kod ini secara dinamik mencipta elemen dengan peraturan CSS yang diingini dan menambahkannya pada akar bayang elemen hos. Dengan cara ini, peraturan gaya baharu digunakan dalam akar bayang dan mengatasi peraturan sedia ada.

Nota: Penyelesaian ini hanya berfungsi jika mod Shadow DOM ditetapkan kepada 'terbuka'.

Kemas kini (untuk Chrome 73 dan Opera 60 )

Dengan keluaran daripada Chrome 73 dan Opera 60, teknik baharu telah tersedia untuk mengatasi gaya dalam akar bayang:

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

Kaedah ini melibatkan mencipta objek CSSStyleSheet dan menambahkannya pada tatasusunan adoptedStyleSheets bagi akar bayang. Helaian gaya baharu kemudiannya boleh digunakan untuk menggantikan gaya sedia ada.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengatasi Gaya dalam Elemen Shadow-Root?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn