Avastage vĂ”imas CSS-i @when-reegel tingimuslikuks stiilimiseks, mis vĂ”imaldab dĂŒnaamilisi ja tundlikke disaine tĂ€iustatud kontrolli ja paindlikkusega.
CSS @when: Tingimusliku Stiilimise Tulevik
Veebiarenduse maailm areneb pidevalt ja CSS ei ole erand. Ăks pĂ”nevamaid ja lootustandvamaid hiljutisi lisandusi CSS-i maastikule on @when reegel. See vĂ”imas funktsioon tutvustab uut viisi stiilide tingimuslikuks rakendamiseks, minnes kaugemale traditsiooniliste meediapĂ€ringute piirangutest ja avades vĂ”imalusi dĂŒnaamilisemate ja tundlikumate disainide jaoks.
Mis on CSS @when?
@when reegel vĂ”imaldab teil rakendada CSS-stiile kindlate tingimuste alusel. See toimib mitmekĂŒlgsema ja vĂ€ljendusrikkama alternatiivina meediapĂ€ringutele, konteineripĂ€ringutele ja isegi JavaScriptil pĂ”hinevatele lahendustele tingimusliku stiilimise jaoks. MĂ”elge sellest kui "kui-siis" lausest oma CSS-i jaoks.
@when reegli pĂ”hisĂŒntaks on jĂ€rgmine:
@when (condition) {
/* Stiilid, mida rakendada, kui tingimus on tÔene */
}
condition (tingimus) vÔib olla mitmesugune loogiline avaldis, mis teeb @when reegli uskumatult paindlikuks. Uurime mÔningaid konkreetseid nÀiteid hiljem selles artiklis.
Miks kasutada @when? Eelised ja plussid
@when reegel pakub mitmeid olulisi eeliseid olemasolevate tingimusliku stiilimise meetodite ees:
- Suurem paindlikkus: Erinevalt meediapÀringutest, mis pÔhinevad peamiselt vaateava suurusel, vÔimaldab
@whenteil stiilid pÔhineda laial valikul teguritel, sealhulgas kohandatud omadustel (CSS-i muutujad), elemendi atribuutidel ja potentsiaalselt isegi konkreetsete HTML-elementide olemasolul vÔi puudumisel. - Parem loetavus ja hooldatavus: Kapseldades tingimusliku loogika otse oma CSS-i, muudab
@whenteie koodi isedokumenteerivamaks ja lihtsamini mĂ”istetavaks. See vĂ€hendab vajadust keerukate JavaScripti lahenduste jĂ€rele ja parandab teie stiililehtede ĂŒldist hooldatavust. - TĂ€iustatud taaskasutatavus: Saate mÀÀratleda keerukaid tingimuslikke stiile
@whenreeglites ja taaskasutada neid kogu oma veebisaidil vÔi rakenduses. See soodustab koodi taaskasutamist ja vÀhendab liiasust. - Potentsiaalselt parem jÔudlus: MÔnel juhul vÔib
@whenkasutamine viia jÔudluse paranemiseni vÔrreldes JavaScriptil pÔhinevate lahendustega, kuna brauser saab tingimusliku loogikaga tegeleda natiivselt. - Koodi tulevikukindlaks muutmine: Kuna CSS areneb edasi, pakub
@whenkindla aluse dĂŒnaamilisemate ja tundlikumate kasutajaliideste loomiseks.
Tingimuse sĂŒntaksi mĂ”istmine
@when tegelik vÔimsus peitub selle vÔimes kÀsitleda mitmesuguseid tingimusi. Siin on mÔned nÀited:
1. Kohandatud omaduste (CSS-i muutujate) kontrollimine
Saate kasutada kohandatud omadusi olekuteabe salvestamiseks ja seejÀrel kasutada @when reeglit stiilide rakendamiseks nende omaduste vÀÀrtuse alusel. See on eriti kasulik teemade loomiseks vÔi kasutajatele teie veebisaidi vÀlimuse kohandamise vÔimaldamiseks.
:root {
--theme-color: #007bff; /* Vaikimisi teemavÀrv */
--font-size: 16px;
}
@when (--theme-color = #007bff) {
body {
background-color: #f0f8ff; /* Rakenda hele taust, kui teemavÀrv on sinine */
}
}
@when (--font-size > 18px) {
p {
line-height: 1.6;
}
}
Selles nÀites kontrollib esimene @when reegel, kas --theme-color kohandatud omadus on vÔrdne #007bff-ga. Kui see on nii, rakendab see body elemendile heleda taustavÀrvi. Teine @when reegel kontrollib, kas --font-size on suurem kui 18px, ja kui see on nii, kohandab see lÔikude elementide reavahet.
2. Boole'i tingimuste hindamine
@when saab kĂ€sitleda ka Boole'i tingimusi, vĂ”imaldades teil rakendada stiile selle alusel, kas teatud tingimus on tĂ”ene vĂ”i vÀÀr. See vĂ”ib olla eriti kasulik stiilide lĂŒlitamiseks kasutaja eelistuste vĂ”i rakenduse oleku alusel.
:root {
--dark-mode: false;
}
@when (--dark-mode = true) {
body {
background-color: #333;
color: #fff;
}
}
Selles nĂ€ites kontrollib @when reegel, kas --dark-mode kohandatud omadus on seatud vÀÀrtusele true. Kui see on nii, rakendab see body elemendile tumeda taustavĂ€rvi ja heleda tekstivĂ€rvi, lubades tegelikult tumeda reĆŸiimi.
3. Tingimuste kombineerimine loogiliste operaatoritega
Keerukamate stsenaariumide jaoks saate kombineerida mitu tingimust, kasutades loogilisi operaatoreid nagu and, or ja not. See vĂ”imaldab teil luua vĂ€ga spetsiifilisi ja nĂŒansseeritud tingimuslikke stiile.
:root {
--is-mobile: false;
--is-logged-in: true;
}
@when (--is-mobile = true and --is-logged-in = true) {
/* Stiilid, mida rakendada ainult mobiilseadmetes ja kui kasutaja on sisse logitud */
.mobile-menu {
display: block;
}
}
Selles nĂ€ites kontrollib @when reegel, kas nii --is-mobile kui ka --is-logged-in on seatud vÀÀrtusele true. Kui mĂ”lemad tingimused on tĂ€idetud, kuvab see mobiilse menĂŒĂŒ elemendi.
4. Elemendi atribuutide kontrollimine
Kuigi tĂ€pne sĂŒntaks vĂ”ib veel areneda, lubavad kavandatavad spetsifikatsioonid kontrollida elemendi atribuute otse tingimuses. See vĂ”ib olla uskumatult kasulik elementide stiilimiseks nende atribuutide alusel, asendades potentsiaalselt paljudel juhtudel vajaduse JavaScriptil pĂ”hinevate atribuutide selektorite jĂ€rele.
@when (element.hasAttribute('data-active')) {
[data-active] {
border: 2px solid blue;
}
}
@when (element.getAttribute('data-theme') = 'dark') {
body {
background-color: black;
color: white;
}
}
Esimene nÀide kontrollib, kas elemendil on atribuut `data-active`. Teine nÀide kontrollib, kas atribuut `data-theme` on vÔrdne 'dark'.
5. StiilipÀringud ja konteineripÀringud (potentsiaalne integratsioon)
Kuigi see on veel arendamisel, on @when reeglil potentsiaali integreeruda stiilipĂ€ringute ja konteineripĂ€ringutega. See vĂ”imaldaks teil rakendada stiile vanemkonteinerile rakendatud stiilide vĂ”i konteineri suuruse alusel, parandades veelgi teie disainide tundlikkust ja kohanemisvĂ”imet. See on eriti huvitav, kuna praegune konteineripĂ€ringute sĂŒntaks on ĂŒsna sĂ”narohke; `@when` vĂ”ib pakkuda lĂŒhemat alternatiivi.
Praktilised nÀited ja kasutusjuhud
Uurime mÔningaid praktilisi nÀiteid, kuidas saate @when reeglit reaalsetes stsenaariumides kasutada:
1. DĂŒnaamiline teemavahetus
Nagu varem nĂ€idatud, saate hĂ”lpsasti rakendada dĂŒnaamilist teemavahetust, kasutades kohandatud omadusi ja @when reeglit. See vĂ”imaldab kasutajatel kohandada teie veebisaidi vĂ€limust vastavalt oma eelistustele.
2. Kohanduvad navigeerimismenĂŒĂŒd
Saate kasutada @when reeglit navigeerimismenĂŒĂŒde loomiseks, mis kohanduvad erinevate ekraanisuuruste vĂ”i seadme orientatsioonidega. NĂ€iteks vĂ”iksite kuvada tĂ€ieliku navigeerimismenĂŒĂŒ lauaarvuti ekraanidel ja hamburgerimenĂŒĂŒ mobiilseadmetes.
3. Vormide valideerimine
Saate kasutada @when reeglit vormielementide stiilimiseks nende valideerimise staatuse alusel. NÀiteks vÔiksite esile tÔsta kehtetud sisestusvÀljad punase ÀÀrisega.
4. Sisu nÀhtavus
@when reeglit saab kasutada sisu nĂ€itamiseks vĂ”i peitmiseks erinevate tingimuste alusel. VĂ”iksite nĂ€idata konkreetset reklaamibĂ€nnerit ainult kasutajatele, kes pole seda veel nĂ€inud, pĂ”hinedes kĂŒpsise vÀÀrtusel vĂ”i kasutaja seadistusel.
5. Rahvusvahelistamine (i18n)
Kuigi see pole selle peamine eesmÀrk, saaks @when reeglit kasutada koos kohandatud omadustega stiilide kohandamiseks kasutaja lokaadi alusel. NÀiteks vÔiksite kohandada fondi suurusi vÔi vahesid, et paremini sobituda erinevate tÀhestikega.
NĂ€iteks, oletame, et teil on kohandatud omadus `--locale`, mis salvestab kasutaja lokaadi:
:root {
--locale: 'en-US'; /* Vaikimisi lokaat */
}
@when (--locale = 'ar') { /* Araabia */
body {
direction: rtl; /* Paremalt vasakule paigutus */
font-family: 'Arial', sans-serif; /* NĂ€idisfont */
}
}
@when (--locale = 'zh-CN') { /* Lihtsustatud hiina keel */
body {
font-family: 'Microsoft YaHei', sans-serif; /* NĂ€idisfont */
font-size: 14px; /* Vajadusel kohanda fondi suurust */
}
}
See nÀide kohandab teksti suunda ja fonti selle alusel, kas lokaat on araabia (`ar`) vÔi lihtsustatud hiina (`zh-CN`). Kuigi see ei asenda otseselt Ôigeid i18n-tehnikaid (nagu erineva sisu serveerimine), nÀitab see, kuidas @when vÔib kaasa aidata lokaliseerituma kogemuse loomisele.
Hetkeseis ja brauseritugi
2024. aasta lÔpu seisuga on @when reegel veel suhteliselt uus funktsioon ja seda ei toeta veel tÀielikult kÔik suuremad brauserid. See on praegu eksperimentaalsete lippude taga mÔnedes brauserites nagu Chrome ja Edge.
Saate jÀlgida @when reegli arengut ja selle brauserituge veebisaitidel nagu Can I use ja ametlikes CSS-i spetsifikatsioonides.
Oluline mĂ€rkus: Kuna funktsioon on eksperimentaalne, vĂ”ivad @when reegli tĂ€pne sĂŒntaks ja kĂ€itumine muutuda enne selle lĂ”plikku vormistamist ja tĂ€ielikku toetamist kĂ”igi brauserite poolt. Oluline on olla kursis viimaste arengutega ja kohandada oma koodi vastavalt.
PolĂŒfillid ja lahendused
Oodates tĂ€ielikku brauserituge, saate kasutada polĂŒfille vĂ”i JavaScriptil pĂ”hinevaid lahendusi @when reegli kĂ€itumise emuleerimiseks. Need lahendused hĂ”lmavad tavaliselt JavaScripti kasutamist tingimuste hindamiseks ja sobivate stiilide rakendamiseks.
Siiski pidage meeles, et polĂŒfillidel ja lahendustel vĂ”ib olla jĂ”udlusele mĂ”ju ja need ei pruugi tĂ€iuslikult jĂ€ljendada natiivse @when reegli kĂ€itumist. Enne nende kasutamist tootmiskeskkondades on oluline hoolikalt kaaluda plusse ja miinuseid.
Parimad praktikad @when kasutamisel
Siin on mÔned parimad praktikad, mida @when reegli kasutamisel silmas pidada:
- Kasutage selgeid ja lĂŒhikesi tingimusi: Veenduge, et teie tingimused oleksid kergesti mĂ”istetavad ja vĂ€ltige liiga keerulisi avaldisi.
- Dokumenteerige oma koodi: Lisage kommentaare oma
@whenreeglite eesmÀrgi selgitamiseks, eriti kui need hÔlmavad keerulist loogikat. - Testige pÔhjalikult: Testige oma koodi erinevates brauserites ja seadmetes, et tagada selle ootuspÀrane toimimine.
- Kaaluge jÔudlust: VÀltige liiga keeruliste
@whenreeglite kasutamist, mis vÔiksid jÔudlust negatiivselt mÔjutada. - Progressiivne tÀiustamine: Kasutage
@whenreeglit progressiivse tÀiustusena. Teie pÔhistiil peaks toimima ka ilma selleta ja@whenreegel peaks lisama ainult lisafunktsionaalsust.
CSS-i tingimusliku stiilimise tulevik
@when reegel kujutab endast olulist sammu edasi CSS-i tingimusliku stiilimise arengus. See pakub paindlikumat, loetavamat ja hooldatavamat alternatiivi traditsioonilistele meediapÀringutele ja JavaScriptil pÔhinevatele lahendustele.
Kuna brauseritugi @when reeglile kasvab, muutub see tĂ”enĂ€oliselt veebiarendajate jaoks ĂŒha olulisemaks tööriistaks. Selle uue funktsiooni omaksvĂ”tmisega saate luua dĂŒnaamilisemaid, tundlikumaid ja kasutajasĂ”bralikumaid veebirakendusi.
Alternatiivid ja kaalutlused
Kuigi @when pakub kaalukaid eeliseid, on oluline kaaluda olemasolevaid alternatiive ja stsenaariume, kus need vÔiksid olla sobivamad:
- MeediapÀringud: Lihtsate vaateavapÔhiste kohanduste jaoks jÀÀvad meediapÀringud otsekoheseks ja hÀsti toetatud valikuks.
- KonteineripÀringud: Komponentide stiilimisel nende konteinerite suuruse alusel on konteineripÀringud (kui need on tÀielikult toetatud) vÔimas valik. Siiski vÔib
@whenpakkuda mĂ”ne konteineripĂ€ringu stsenaariumi jaoks lĂŒhemat sĂŒntaksit. - JavaScript: VĂ€ga keerulise tingimusliku loogika vĂ”i vĂ€liste API-dega suhtlemisel vĂ”ib JavaScript siiski vajalik olla. Siiski pĂŒĂŒdke parema jĂ”udluse ja hooldatavuse nimel loogika vĂ”imaluse korral CSS-i viia.
- CSS-i funktsioonipÀringud (@supports): Kasutage
@supportsreeglit, et tuvastada, kas brauser toetab teatud CSS-i funktsiooni. See on ĂŒlioluline varustiilide pakkumiseks, kui@whenpole saadaval.
Reaalse maailma nÀide: KomponendipÔhine stiilimine @when abil
Kujutame ette stsenaariumi, kus teil on oma veebisaidil korduvkasutatav "kaardi" komponent. Soovite kaarti stiilida erinevalt sÔltuvalt sellest, kas see on esiletÔstetud vÔi mitte, ja kas kasutaja on sisse logitud. Kasutame nende olekute haldamiseks kohandatud omadusi.
/* Kaardi pÔhistiil */
.card {
border: 1px solid #ccc;
padding: 15px;
margin-bottom: 20px;
}
/* EsiletÔstetud kaardi stiil */
@when (element.hasAttribute('data-featured')) {
.card[data-featured] {
border-color: #007bff;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.card[data-featured] .card-title {
font-weight: bold;
color: #007bff;
}
}
/* KasutajapÔhine stiil (nÔuab JavaScripti --logged-in seadistamiseks) */
@when (--logged-in = true) {
.card {
/* Lisastiilid sisseloginud kasutajatele */
background-color: #f9f9f9;
}
}
/* Tingimuste kombineerimine */
@when (element.hasAttribute('data-featured') and --logged-in = true) {
.card[data-featured] {
/* Veelgi spetsiifilisem stiil */
background-color: #e9ecef;
transform: translateY(-5px); /* Peen tÔstmisefekt */
}
}
Selles nÀites:
- Esimene
@whenplokk stiilib kaardi, kui sellel ondata-featuredatribuut. - Teine
@whenplokk pakub kasutajapÔhist stiili sisseloginud kasutajatele (eeldusel, et teil on JavaScripti mehhanism--logged-inkohandatud omaduse seadistamiseks). - Viimane
@whenplokk kombineerib mÔlemad tingimused, rakendades veelgi spetsiifilisemat stiili, kui mÔlemad tingimused on tÀidetud.
See nÀide demonstreerib @when reegli paindlikkust keerukate tingimuslike stiilimisstsenaariumide kÀsitlemisel komponendipÔhises arhitektuuris.
KokkuvÔte
CSS-i @when reegel on murranguline funktsioon, mis annab veebiarendajatele vĂ”imaluse luua dĂŒnaamilisemaid, tundlikumaid ja hooldatavamaid stiililehti. Kuna brauseritugi kĂŒpseb, on @when valmis saama asendamatuks tööriistaks kaasaegsete veebirakenduste ehitamisel. Selle vĂ”imsa uue funktsiooni omaksvĂ”tmisega saate avada uusi vĂ”imalusi tingimuslikuks stiilimiseks ja pakkuda erakordseid kasutajakogemusi.
Olge kursis tulevaste uuenduste ja arengutega, kuna @when reegel areneb edasi ja kujundab CSS-i tulevikku!
Lisalugemist ja ressursid
- CSS Conditional Rules Module Level 3 (Ametlik spetsifikatsioon - kontrollige uuendusi!)
- Can I use... (Brauseritoe jÀlgimine)
- Mozilla Developer Network (MDN) (CSS-i dokumentatsioon)