Bak watèë meurunoe prinsip-prinsip dasar CSS, sidroë-droë ureuëng geupeurunoe keu geutuléh gaya modular, jeuët geungui lom, ngon deskriptif keu geupeupasoë keumungkénan keu geupeutheun. Teuma watee pengembang jeut keu terlibat ngon aplikasi donya nyata, seureng that meurasa hana mungken untuk meutamah fitur UI tanpa gaya bocor u daerah nyang hana dimaksud. Masalah nyoe kayem that meubola salju jeut keu loop nyang peunoh droe; gaya nyang seucara teoritis ji lingkup keu saboh elemen atawa glah mulai jipeuleumah dipat awaknyan hana jitamong. Nyoe meupaksa pengembang keu geupeugot selektor nyang leubeh spesifik lom keu geugantoe gaya nyang bocor, nyang lheuh nyan hana sengaja geugantoe gaya global, ngon seuteroh jih. Konvensi nan glah kaku, lage BEM, adalah salah saboh solusi teoritis untuk masalah nyo. Metode BEM (Blok, Elemen, Modifier) nakeuh saboh cara nyang sistematis keu geubri nan keu glah CSS keu geupeupasoë keugunaan lom ngon struktur lam file CSS. Konvensi peunan lagee nyoe jeut geupeukureung beban kognitif deungon memanfaatkan bahasa domain keu geugamba elemen ngon keadaan jih, ngon meunyo geuimplementasikan deungon beutoi, jeut geupeugot gaya keu aplikasi rayeuk leubeh mudah geupeulihara. Teuma lam donya nyata, hana sabe-sabe lagee nyan. Prioritas jeuet meu ubah, dan deungon meu ubah, pelaksanaan jeuet keu hana konsisten. Peurubahan ubeut bak struktur HTML jeuet peureulèë le revisi nan glah CSS. Deungon aplikasi front-end nyang brat that interaktif, nan glah nyang meuikot pola BEM jeut jeut panyang ngon hana mudah (miseu jih, app-user-overview__status--is-authenticating), ngon hana sepenuh jih meupatuh keu aturan peunan nyang meupeugah struktur sistem, sampoe menyangkal manfaat jih. Meunyo ta kalon tantangan-tantangan nyoe, hana hireun le meunyo pengembang ka meuubah keu framework, Tailwind jeut keu framework CSS nyang paleng populer. Daripada ta cuba meuprang peu nyang deuh lagee prang spesifitas nyang hana meunang antara gaya, leubeh mudah ta meunyerah bak CSS Cascade ngon ta pakek alat nyang menjamin isolasi nyang lengkap. Pengembang Leubeh Meusandar Bak Utilitas Pakriban tanyoe ta teupeu bahwa na padum-padum droe pengembang nyang galak that bak geuhindari gaya cascade? Nyoe keuh muncul jih alat front-end "modern" - lagee kerangka CSS-in-JS - nyang dirancang khusus keu tujuan nyan. Beukerija ngon gaya terisolasi nyang ketat lingkup jih keu komponen-komponen tertentu jeut deuh lagee nafah udara segar. Nyoe geupeugadeh keubutuhan keu nan hai-hai — mantong salah saboh tugas front-end nyang paleng jibenci ngon jipajoh watee — ngon memungkenkan pengembang jeut keu produktif tanpa sepenuh jih meuphom atawa memanfaatkan manfaat warisan CSS. Teuma parit CSS Cascade nyan teuka ngon masalah droe. Miseu jih, meususon gaya lam JavaScript peureulee konfigurasi build nyang brat ngon seureng that meuakibatkan gaya nyang canggung meujampu ngon markup komponen atawa HTML. Alih-alih konvensi peunan nyang dipeutimang deungon hati-hati, kamoe meubi alat untuk meubangun selektor ngon identifikasi keu kamoe (miseu jih, .jsx-3130221066), nyang meuharuskan pengembang untuk teutap meusajan ngon bahasa semu laen lam ngon dari droe jih. (Lagee beban kognitif untuk meuphom peu mandum useEffects komponen droeneuh hana sep!) Leubeh lanjot abstraksi buet peunan glah keu tooling berarti bahwa debugging dasar seureng dibatasi keu versi aplikasi terteunte nyang dikompilasi keu pengembangan, daripada memanfaatkan fitur browser asli nyang mendukung debugging langsong, lagee Developer Tools. Rap lagee tanyoe peurlee ta kembangkan alat untuk ta debug alat yang tanyoe pakek untuk ta abstraksi peu yang ka disediakan le web — mandum demi ta plueng dari “sakét” tuleh CSS standar. Naseb, fitur CSS modern kon mantong geupeugot tuleh CSS standar leubeh fleksibel tapi cit geubri pengembang lagee geutanyoe leubeh le daya keu geuatoe cascade dan geupeugot jih beukeureuja keu geutanyoe. CSS Cascade Layers nakeuh saboh contoh nyang that hayeu, tapi na fitur laen nyang meurumpok kureung perhatian nyang mengejutkan — meskipun nyan ka meu ubah jinoe baroe-baroe nyoe ka jeut keu kompatibel Baseline. CSS @lingkup Bak-Aturan . Lon anggap CSS @scope at-rule jeut keu ubat potensial keu macam kecemasan nyang dipicu le gaya-bocoran nyang kaleuh kamoe liputi, salah saboh nyang hana memaksa kamoe untuk meukompromi keuntungan web asli keu abstraksi dan alat bangunan ekstra. "Aturan CSS @scope memungkenkan droeneuh keu neupileh elemen lam subtree DOM tertentu, neutargetkan elemen deungon tepat tanpa neutuleh selektor nyang leubeh spesifik nyang payah neugantoe, dan tanpa neugabong selektor droeneuh that erat ngon struktur DOM."— MDN
Deungon kata laén, geutanyoe jeuet ta keurija ngon gaya nyang meuisolasi lam instansi-instansi tertentu hana ta korbankan warisan, cascading, atawa bahkan peumisah dasar keuprihatinan .nyang ka jeuet keu pedoman pembangunan front-end nyang ka treb.
Tambah lom, na liputan browser nyang that get. Bahkan, Firefox 146 ka ji tamah dukungan keu @scope bak buleun Desember, jeut keu kompatibel Baseline keu phon that. Nyoe keuh perbandingan sederhana antara saboh tombol nyang geupake pola BEM versus aturan @scope:
Aturan @scope memungkenkan keu presisi deungon kompleksitas nyang kureung. Pengembang hana le peureulee geupeugot bataih-bataih ngon geungui nan glah, nyang, bak giliran jih, memungkenkan awak nyan keu geutuleh selektor berdasarkan elemen HTML asli, ngon nyan geupeugadeh peureulee pola nan glah CSS nyang preskriptif. Deungon cara tapeugadeh mantong keubutuhan keu manajemen nan glah, @scope jeuet tapeukureueng rasa teumakot nyang meukaet ngon CSS lam proyek-proyek rayeuk.
Peuguna Dasar
Keu mulai, tamah aturan @scope keu CSS droeneuh dan neupasoe root selector keu gaya nyang akan di scope:
@lingkup (
Jadi, miseu jih, meunyo tanyoe ta lingkup gaya keu elemen
@lingkup (nav) { a { /* Gaya-gaya link lam lingkup nav */ }
a:aktif { /* Gaya-gaya tautan aktif */ }
a:aktif::seugolom { /* Tautan aktif ngon elemen semu keu gaya ekstra */ }
@media (leubeh maksimum: 768px) { a { /* Penyesuaian nyang tanggap */ } } }
Nyoe, keudroe, kon saboh fitur groundbreaking. Namun, argumen keudua jeut ditamah keu ruang lingkup untuk dipeuget batas yang leubeh miyup, secara efektif didefinisikan titek awai dan akhe ruang lingkup.
/* Elemen peu mantong lam ul hana akan na gaya-gaya nyang diterapkan */ @lingkup (nav) keu (ul) { a { ukuran huruf: 14px; } }
Praktek nyoe geuseubot donut scoping, ngon na padum-padum boh pendekatan nyang jeuet geupake, jitamong cit serangkaian selektor nyang saban ngon that spesifik nyang geugabongkan ngon struktur DOM, :not pseudo-selector, atawa geubri nan glah spesifik keu elemen lam
Keusimpulan . Kerangka CSS utilitas-phon, lagee Tailwind, meubut deungon get keu prototyping ngon proyek-proyek nyang leubeh ubeut. Namun, manfaat awak nyan bagah meukureng, watee dipakek lam proyek-proyek nyang leubeh rayeuk nyang melibatkan leubeh dari padum-padum boh pengembang. Peukeumbangan front-end ka jeuet keu seumaken rumit lam padum-padum thôn nyoe, ngon CSS hana terkecuali. Sementara aturan @scope kon ubat-ubat, nyan jeut mengurangi kebutuhan keu alat-alat nyang kompleks. Meunyo geungui bak teumpat, atawa di samping peunan glah strategis, @scope jeuet geupeumudah ngon leubeh mangat keu geutuleh CSS nyang jeuet geupeutheun. Bacaan Selanjutnya
CSS @lingkup (MDN) "CSS @ lingkup", Juan Diego Rodríguez (Trik-CSS) Catatan Peuleumah Firefox 146 (Firefox) Dukôngan Peulayar (JeuetLônGunak) Kerangka CSS nyang that geugalak (Keadaan CSS 2024) "Nyang "C" lam CSS: Kaskade", Thomas Yip (CSS-Trik) Peuturi BEM (Meurumpok BEM)