Esasy CSS ýörelgelerini öwreneniňde, durnuklylygy üpjün etmek üçin modully, gaýtadan ulanylýan we suratlandyryjy stilleri ýazmak öwredilýär. Developöne işläp düzüjiler hakyky dünýä programmalary bilen meşgullananda, köplenç garaşylmadyk ýerlere stil syzmazdan UI aýratynlyklaryny goşmak mümkin däl ýaly duýulýar. Bu mesele köplenç gar toplaryny öz-özüni ýerine ýetirýän halka öwürýär; teoretiki taýdan bir elemente ýa-da synpa degişli stil, degişli bolmadyk ýerlerini görkezip başlaýar. Bu, döredijini syzdyrylan stilleri ýok etmek üçin has anyk saýlaýjylary döretmäge mejbur edýär, soň bolsa tötänleýin global stilleri ýok edýär we ş.m. BEM ýaly berk synp ady konwensiýalary bu meseläniň teoretiki çözgüdi. BEM (Blok, element, üýtgediji) usulyýeti, CSS faýllarynyň içinde gaýtadan ulanylmagyny we gurluşyny üpjün etmek üçin CSS synplaryny atlandyrmagyň yzygiderli usulydyr. Şunuň ýaly konwensiýalara at dakmak, elementleri we olaryň ýagdaýyny suratlandyrmak üçin domen dilini ulanyp, aň-bilim ýüküni azaldyp biler we dogry ýerine ýetirilse, uly programmalar üçin stilleri saklamagy aňsatlaşdyryp biler. Hakyky dünýäde bolsa, hemişe beýle işlemeýär. Ileri tutulýan ugurlar üýtgäp biler we üýtgemeler bilen durmuşa geçirmek biri-birine gabat gelmeýär. HTML gurluşyna ownuk üýtgeşmeler köp CSS synp adynyň täzeden seredilmegini talap edip biler. Örän ýokary interaktiw öňdäki programmalar bilen, BEM nagyşyna eýerýän synp atlary uzyn we çylşyrymly bolup biler (meselem, programma-ulanyjy-syn__status - tassyklaýjy) we at dakmak düzgünlerine doly boýun egmezlik ulgamyň gurluşyny bozýar we şeýlelik bilen onuň peýdalaryny ýitirýär. Bu kynçylyklary göz öňünde tutup, işläp düzüjileriň iň meşhur CSS çarçuwasy bolan Tailwind-iň çarçuwalara ýüz tutandyklary geň däldir. Stilleriň arasynda ýeňip bolmajak aýratynlyk söweşi ýaly göreşmäge synanyşmagyň ýerine, CSS Kaskadyndan ýüz öwürmek we doly izolýasiýa kepillendirýän gurallary ulanmak has aňsat. Döredijiler kommunal hyzmatlara has köp bil baglaýarlar Käbir işläp düzüjileriň kaskad görnüşlerinden gaça durmak isleýändigini nädip bilýäris? Bu maksat üçin ýörite döredilen “CSS-in-JS” çarçuwalary ýaly “häzirki zaman” öňdäki gurallaryň ösmegi. Aýry-aýry komponentlere berk ýapylan aýratyn görnüşler bilen işlemek, arassa howadan dem alýan ýaly bolup biler. Bir zadyň adyny aýtmak zerurlygyny aradan aýyrýar - henizem iň ýigrenilýän we köp wagt talap edýän öňdäki meseleleriň biri - we döredijilere CSS mirasynyň artykmaçlyklaryna doly düşünmezden ýa-da peýdalanmazdan öndürijilikli bolmaga mümkinçilik berýär. Emma CSS Kaskadyny gazmak öz problemalary bilen ýüze çykýar. Mysal üçin, JavaScript-de stil düzmek agyr gurluş konfigurasiýalaryny talap edýär we köplenç komponent belligi ýa-da HTML bilen stilleriň oňaýsyz birleşmegine sebäp bolýar. Ady bellemek konwensiýalaryna üns bilen garamagyň ýerine, saýlaýjylary we kesgitleýjileri (meselem, .jsx-3130221066) awtomatiki usulda gurmak üçin gurallary gurmaga mümkinçilik berýäris, bu bolsa işläp düzüjilerden başga bir pseudo dilini dowam etdirmegini talap edýär. (Komponentiňiziň ulanýan effektleriniň nämedigine düşünmek üçin aň-düşünje ýükleri eýýäm ýeterlik däl ýaly!) Mundan başga-da, synplara gurallary atlandyrmak işini abstrakt etmek, düzüjiniň gurallary ýaly janly düzedişleri goldaýan ýerli brauzer aýratynlyklaryny ulanman, köplenç ösüş üçin düzülen ýörite programma wersiýalarynda çäklendirilendigini aňladýar. Webiň eýýäm hödürleýän zatlaryny abstrakt etmek üçin ulanýan gurallarymyzy düzetmek üçin gurallary işläp düzmeli diýen ýaly - bularyň hemmesi standart CSS ýazmagyň “agyrysyndan” gaçmak üçin. Bagtymyza, häzirki zaman CSS aýratynlyklary diňe bir ýazuw standart CSS-ni has çeýe etmek bilen çäklenmän, biziň ýaly döredijilere kaskady dolandyrmak we ony işlemek üçin has köp güýç berýär. CSS Kaskad gatlaklary ajaýyp mysal, ýöne geň galdyryjy ünsi ýetmezçilik edýän başga bir aýratynlyk bar - häzirki wagtda “Baseline” gabat gelýänligi sebäpli üýtgeýär. CSS @ skop düzgüni Düzgüne görä CSS @scope, abstraksiýalar we goşmaça gurluşyk gurallary üçin ýerli web artykmaçlyklaryny bozmaga mejbur etmeýän, syzdyrylan aladalar sebäpli ýüze çykýan aladanyň bejergisi bolup biler. "Düzgüne görä @scope CSS, belli bir DOM subtree elementlerini saýlamaga mümkinçilik berýär, elementleri takyk kesgitlemek gaty kyn bolan saýlaýjylary ýazmazdan we saýlaýjylaryňyzy DOM gurluşyna gaty berk birikdirmezden." - MDN
Başga sözler bilen aýdanymyzda, aýratyn ýagdaýlarda mirasy, kaskady ýa-da aladalaryň esasy bölünişigini pida etmezden aýratyn usullar bilen işläp bileris.öňden gelýän ösüşiň uzak wagtlap alyp barýan ýörelgesi.
Mundan başga-da, ajaýyp brauzer gurşawy bar. Aslynda, Firefox 146 dekabr aýynda @scope üçin goldaw goşdy we ilkinji gezek Baseline laýyk gelýär. Ine, @scope düzgünine garşy BEM nagşyny ulanýan düwmäniň arasynda ýönekeý deňeşdirme:
@Scope düzgüni has çylşyrymlylygy bilen takyklygy üpjün edýär. Öndüriji indi synp atlaryny ulanyp serhetleri döretmeli däl, bu bolsa öz gezeginde ýerli HTML elementlerine esaslanýan saýlaýjylary ýazmaga mümkinçilik berýär we şeýlelik bilen CSS synp adynyň nusgalarynyň zerurlygyny aradan aýyrýar. Diňe synp adyny dolandyrmagyň zerurlygyny aýyrmak bilen, @scope uly taslamalarda CSS bilen baglanyşykly gorkyny azaldyp biler.
Esasy ulanylyşy
Başlamak üçin CSS-ä @scope düzgünini goşuň we haýsy stiliň ulanyljakdygyny kök saýlaýjyny goşuň:
@scope (
Şeýlelikde, mysal üçin, stilleri
@scope (nav) { a nav / * Naw çäginde baglanyşyk stilleri * /}
a: işjeň {/ * Işjeň baglanyşyk stilleri * /}
a: işjeň :: öň {/ * goşmaça stil düzmek üçin pseudo-element bilen işjeň baglanyşyk * /}
@media (iň giňligi: 768px) { a {/ * Jogap beriji düzedişler * /} } }
Bu, öz-özünden düýpli aýratynlyk däl. Şeýle-de bolsa, çäkleriň başlangyç we ahyrky nokatlaryny netijeli kesgitläp, has pes araçäk döretmek üçin çäklere ikinji bir argument goşup bolýar.
/ * Ulyň içindäki islendik elementde ulanylýan stil bolmaz * / @scope (nav) to (ul) { a { şrift ölçegi: 14px; } }
Bu tejribe donut skoping diýilýär we ulanyp boljak birnäçe çemeleşme bar, şol sanda DOM strukturasyna berk birikdirilen şuňa meňzeş, ýokary derejeli saýlaýjylaryň bir topary, a: ýasama saýlaýjy däl ýa-da dürli CSS-leri dolandyrmak üçin
/ *
Netije Tailwind ýaly peýdaly ilkinji CSS çarçuwalary prototip ýazmak we kiçi taslamalar üçin gowy işleýär. Bir-iki sany işläp düzüjiniň gatnaşmagynda has uly taslamalarda ulanylanda, olaryň peýdalary çalt azalýar. Öňdäki ösüş soňky birnäçe ýylda has çylşyrymlaşdy we CSS hem muňa ýol bermeýär. @Scope düzgüni bejergisi däl bolsa-da, çylşyrymly gurallara zerurlygy azaldyp biler. Strategiki synp atlandyrmagyň ýerine ýa-da gapdalynda ulanylanda, @scope durnukly CSS ýazmagy has aňsat we gyzykly edip biler. Goşmaça okamak
CSS @scope (MDN) “CSS @scope”, Huan Diego Rodriguez (CSS-Tricks) Firefox 146 goýberiş bellikleri (Firefox) Brauzer goldawy (CanIUse) Meşhur CSS çarçuwalary (CSS 2024 ýagdaýy) CSS-de “C”: Kaskad ”, Tomas ipip (CSS-Tricks) BEM Giriş (BEM alyň)