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

Bagaimanakah Saya Boleh Mengatasi Gaya dalam Elemen Shadow-Root?

Patricia Arquette
Lepaskan: 2024-11-14 20:39:02
asal
229 orang telah melayarinya

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);
Salin selepas log masuk

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);
Salin selepas log masuk

Kaedah ini melibatkan mencipta objek CSSStyleSheet dan menambahkannya pada tatasusunan gaya terpakai 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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan