Gaya dengan Cakupan di Dalam Shadow DOM
Tulis CSS yang hanya memengaruhi elemen di dalam pohon bayangan.
Gaya dengan Cakupan di Dalam Shadow DOM adalah pelajaran HTML Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar HTML Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus HTML Academy mencakup 4 pelajaran total.
Enkapsulasi CSS secara Bawaan
Setiap aturan <style> di dalam shadow root hanya berlaku di dalam root tersebut. p { color: red } di pohon shadow hanya memberi warna pada paragraf di dalam shadow itu—paragraf di dokumen utama tidak terpengaruh, dan gaya dari dokumen utama tidak dapat masuk ke dalam shadow.
Alasan Enkapsulasi Penting
Enkapsulasi menghilangkan masalah CSS global yang telah menghantui aplikasi besar selama puluhan tahun. Gaya komponen tidak dapat secara tidak sengaja ditimpa oleh CSS situs, dan komponen juga tidak dapat merusak situs secara tidak sengaja. Batas ini ditetapkan oleh spesifikasi, bukan konvensi.
Pseudo-kelas :host
Dari dalam shadow, tata elemen host dengan :host. Gunakan :host(selector) untuk membatasi berdasarkan selector: :host([open]) { display: block; } hanya cocok dengan host ketika atribut open ada.
Properti yang Diwariskan Tetap Menyeberang
Properti CSS yang diwariskan (color, font-family, line-height) tetap menyeberangi batas shadow melalui pewarisan. Pengaturan dokumen body { color: blue } juga membuat teks shadow berwarna biru, kecuali shadow menimpanya secara eksplisit. Ini merupakan fitur: bawaan tipografi tetap konsisten.
Properti Kustom CSS Menembus Batas
Properti kustom (variabel CSS) diwariskan melalui shadow root, sehingga menjadi cara standar untuk menyediakan API tema komponen: deklarasikan --card-bg: var(--surface, white) di dalam shadow dan biarkan pengguna mengganti --surface pada host.
/* Shadow */
:host {
background: var(--card-bg, white);
}
/* Page */
my-card {
--card-bg: #f3f4f6;
}::part untuk Penataan Gaya Eksternal
Tandai elemen internal shadow dengan part="name", lalu pengguna dapat menatanya dengan my-card::part(name) { ... }. Gunakan part sebagai kait penataan gaya individual sambil tetap menjaga sebagian besar pohon shadow tetap terenkapsulasi.
Lembar Gaya yang Diadopsi
shadowRoot.adoptedStyleSheets = [sheet] membagikan satu CSSStyleSheet ke banyak shadow root sehingga parsing <style> berulang dapat dihindari. Buat lembar dengan new CSSStyleSheet() dan sheet.replaceSync(cssText). Ini memberikan peningkatan kinerja besar dalam sistem desain.
Urutan Deklarasi
Tempatkan tag <style> di bagian paling atas innerHTML shadow agar gaya diurai sebelum bagian DOM lainnya dibuat. Ini menghindari kilatan singkat konten tanpa gaya yang terjadi jika gaya muncul terlambat dalam urutan parsing.
:host-context untuk Aturan Berdasarkan Leluhur
:host-context(.dark-mode) :host menata host berdasarkan selector leluhur di luar shadow. Ini berguna untuk memberi tema pada komponen berdasarkan kelas pada pembungkus tingkat tinggi. Dukungan peramban sudah baik, tetapi verifikasilah dalam matriks target Anda.
Reset Global Tetap di Luar
Reset CSS di seluruh dokumen (margin pada body, box-sizing) tidak memengaruhi pohon shadow. Terapkan kembali reset yang diperlukan di dalam setiap shadow root, atau bagikan melalui lembar gaya yang dibuat secara terprogram dan diadopsi ke setiap komponen.
Men-debug Gaya Shadow
Chrome DevTools menampilkan shadow root di panel Elements dengan label "#shadow-root (open)". Anda dapat memeriksa, mengedit, dan mengaktifkan atau menonaktifkan gaya shadow seperti CSS lainnya, termasuk pseudo-kelas :host dan aturan ::part.
Uji Pemahaman
Mengapa properti kustom CSS (variabel) menjadi cara yang disarankan untuk memberi tema pada komponen shadow DOM?
Ringkasan
Shadow DOM mengenkapsulasi gaya ke kedua arah. Tata host dengan :host, sediakan kait tema melalui properti kustom CSS yang diwariskan, tampilkan elemen individual untuk ditata dengan ::part, bagikan lembar gaya dengan adoptedStyleSheets, dan terapkan kembali reset di setiap shadow root karena CSS di seluruh dokumen tidak melewati batas.
Belajar HTML dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 40
- Pelajaran
- 159
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Gaya dengan Cakupan di Dalam Shadow DOM” gratis?
Ya — teks lengkap “Gaya dengan Cakupan di Dalam Shadow DOM” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus HTML Academy, upgrade ke CoddyKit PRO. Kursus HTML Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Gaya dengan Cakupan di Dalam Shadow DOM”?
Tulis CSS yang hanya memengaruhi elemen di dalam pohon bayangan. Kamu berlatih HTML Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai HTML Academy?
Tidak diperlukan pengalaman sebelumnya. HTML Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Gaya dengan Cakupan di Dalam Shadow DOM” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran HTML Academy ini?
Ya. Setiap pelajaran HTML Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- attachShadow dan Shadow Root
- Elemen Slot untuk Distribusi Konten
- Gaya dengan Cakupan di Dalam Shadow DOM
- Part dan Exportparts untuk Gaya Eksternal