Avastage CSS @when reegli võimsus, et luua dünaamilisi ja reageerivaid veebidisaine. Õppige, kuidas rakendada stiile tingimuslikult konteineripäringute, kohandatud olekute ja muude kriteeriumide alusel.
CSS @when reegli valdamine: tingimuslik stiilide rakendamine dĂĽnaamiliseks veebidisainiks
CSS @when reegel, mis on osa CSS-i tingimuslike reeglite mooduli 5. taseme spetsifikatsioonist, pakub võimsat viisi stiilide tingimuslikuks rakendamiseks teatud tingimuste alusel. See läheb kaugemale traditsioonilistest meediapäringutest, võimaldades detailsemat kontrolli stiilide üle, tuginedes konteineri suurustele, kohandatud omadustele ja isegi elementide olekule. See võib oluliselt parandada teie veebidisainide reageerimisvõimet ja kohandatavust, mis viib parema kasutajakogemuseni erinevates seadmetes ja kontekstides.
@when reegli põhitõdede mõistmine
Oma olemuselt pakub @when reegel mehhanismi CSS-stiilide ploki täitmiseks ainult siis, kui konkreetne tingimus on täidetud. See sarnaneb if-lausetele programmeerimiskeeltes. Vaatame süntaksi lähemalt:
@when tingimus {
/* CSS-reeglid, mida rakendada, kui tingimus on tõene */
}
tingimus võib põhineda erinevatel teguritel, sealhulgas:
- Konteineripäringud: Elementide stiilimine pigem nende ümbritseva elemendi suuruse kui vaateakna põhjal.
- Kohandatud olekud: Reageerimine kasutaja interaktsioonidele või rakenduse olekutele.
- CSS muutujad: Stiilide rakendamine CSS-i kohandatud omaduste väärtuse põhjal.
- Vahemikupäringud: Kontrollimine, kas väärtus jääb kindlasse vahemikku.
@when reegli võimsus peitub selle võimes luua tõeliselt komponendipõhist stiilimist. Saate kapseldada stiililoogika komponendi sisse ja tagada, et see rakendub ainult siis, kui komponent vastab teatud kriteeriumidele, olenemata ümbritsevast lehe paigutusest.
Konteineripäringud koos @when-iga
Konteineripäringud on reageeriva disaini jaoks revolutsioonilised. Need võimaldavad elementidel kohandada oma stiili vanemkonteineri mõõtmete, mitte ainult vaateakna laiuse põhjal. See võimaldab luua paindlikumaid ja taaskasutatavamaid komponente. Kujutage ette kaardikomponenti, mis kuvatakse erinevalt sõltuvalt sellest, kas see on paigutatud kitsasse külgribasse või laia põhisisu alasse. @when reegel muudab selle uskumatult lihtsaks.
Lihtne konteineripäringu näide
Esmalt peate deklareerima konteineri. Saate seda teha kasutades container-type omadust:
.container {
container-type: inline-size;
}
inline-size võimaldab konteinerit pärida selle reasisese suuruse (laius horisontaalsetes kirjutusrežiimides, kõrgus vertikaalsetes kirjutusrežiimides) alusel. Võite kasutada ka size, et pärida mõlemat mõõdet, või normal, et mitte luua päringukonteinerit.
Nüüd saate kasutada @container (mida sageli kasutatakse koos @when-iga), et rakendada stiile konteineri suuruse põhjal:
@container (min-width: 300px) {
.card {
flex-direction: row;
align-items: center;
}
.card__image {
width: 100px;
height: 100px;
}
}
@container (max-width: 299px) {
.card {
flex-direction: column;
align-items: flex-start;
}
.card__image {
width: 100%;
height: auto;
}
}
Selles näites muutub .card paigutus konteineri laiuse põhjal. Kui konteiner on vähemalt 300px lai, kuvatakse kaardil pilt ja tekst kõrvuti. Kui see on kitsam, paigutatakse need vertikaalselt.
Siin on, kuidas saame kasutada @when-i sama tulemuse saavutamiseks, potentsiaalselt kombineerituna @container-iga sõltuvalt brauseri toest ja kodeerimiseelistusest (kuna @when pakub mõnes stsenaariumis rohkem paindlikkust kui lihtsalt konteineri suurus):
@container card-container (min-width: 300px) {
@when container(card-container) {
.card {
flex-direction: row;
align-items: center;
}
.card__image {
width: 100px;
height: 100px;
}
}
}
@container card-container (max-width: 299px) {
@when container(card-container) {
.card {
flex-direction: column;
align-items: flex-start;
}
.card__image {
width: 100%;
height: auto;
}
}
}
Selles näites on `card-container` konteineri nimi, mis on määratud @container-iga, ja container(card-container) @when-is kontrollib, kas määratud konteineri kontekst on aktiivne. Märkus: container() funktsiooni tugi ja täpne süntaks võivad brauserites ja versioonides erineda. Enne implementeerimist konsulteerige brauseri ühilduvustabelitega.
Praktilised rahvusvahelised näited
- E-kaubanduse tootenimekirjad: Kuvage tootenimekirju erinevalt sõltuvalt kategoorialehe ruudustikus saadaolevast ruumist. Väiksem konteiner võib näidata ainult toote pilti ja hinda, samas kui suurem konteiner võiks sisaldada lühikirjeldust ja hinnangut. See on kasulik erinevates piirkondades, kus on erinev internetikiirus ja seadmetüübid, võimaldades optimeeritud kogemusi nii tipptasemel lauaarvutites kui ka madala ribalaiusega mobiilsideühendustega arengumaades.
- Uudisteartiklite kokkuvõtted: Kohandage uudiste veebisaidi avalehel kuvatavate artiklite kokkuvõtete pikkust vastavalt konteineri laiusele. Kitsas külgribas näidake ainult pealkirja ja mõnda sõna; põhisisu alas esitage üksikasjalikum kokkuvõte. Arvestage keelelisi erinevusi, kus mõned keeled (nt saksa keel) kipuvad olema pikemate sõnade ja fraasidega, mis mõjutab kokkuvõtete jaoks vajalikku ruumi.
- Juhtpaneeli vidinad: Muutke juhtpaneeli vidinate paigutust vastavalt nende konteineri suurusele. Väike vidin võib kuvada lihtsa diagrammi, samas kui suurem võiks sisaldada üksikasjalikku statistikat ja juhtnuppe. Kohandage juhtpaneeli kogemust vastavalt konkreetse kasutaja seadmele ja ekraani suurusele, arvestades kultuurilisi eelistusi andmete visualiseerimisel. Näiteks võivad teatud kultuurid eelistada tulpdiagramme sektordiagrammidele.
@when kasutamine kohandatud olekutega
Kohandatud olekud võimaldavad teil määratleda elementidele oma olekuid ja käivitada stiilimuudatusi nende olekute põhjal. See on eriti kasulik keerulistes veebirakendustes, kus traditsioonilised CSS pseudo-klassid nagu :hover ja :active on ebapiisavad. Kuigi kohandatud olekud on brauseri implementatsioonides alles arenemas, pakub @when reegel paljulubavat viisi stiilide kontrollimiseks nende olekute põhjal, kui tugi küpseb.
Kontseptuaalne näide (olekute simuleerimine CSS muutujatega)
Kuna natiivne kohandatud olekute tugi ei ole veel universaalselt saadaval, saame seda simuleerida CSS muutujate ja JavaScripti abil.
/* CSS */
.my-element {
--is-active: 0;
background-color: #eee;
}
@when var(--is-active) = 1 {
.my-element {
background-color: #aaf;
}
}
/* JavaScript */
const element = document.querySelector('.my-element');
element.addEventListener('click', () => {
element.style.setProperty('--is-active', element.style.getPropertyValue('--is-active') === '0' ? '1' : '0');
});
Selles näites kasutame CSS muutujat --is-active elemendi oleku jälgimiseks. JavaScripti kood lülitab selle muutuja väärtust, kui elemendil klõpsatakse. Seejärel rakendab @when reegel teistsuguse taustavärvi, kui --is-active on võrdne 1-ga. Kuigi see on ajutine lahendus, demonstreerib see tingimusliku stiilimise kontseptsiooni oleku põhjal.
Potentsiaalsed tulevased kasutusjuhud tõeliste kohandatud olekutega
Kui tõelised kohandatud olekud on implementeeritud, võib süntaks välja näha umbes selline (märkus: see on spekulatiivne ja põhineb ettepanekutel):
.my-element {
/* Esialgsed stiilid */
}
@when :state(my-custom-state) {
.my-element {
/* Stiilid, kui kohandatud olek on aktiivne */
}
}
Seejärel kasutaksite JavaScripti kohandatud oleku määramiseks ja tühistamiseks:
element.states.add('my-custom-state'); // Aktiveeri olek
element.states.remove('my-custom-state'); // Deaktiveeri olek
See võimaldaks uskumatult peent kontrolli stiilide üle rakenduse loogika põhjal.
Internatsionaliseerimise ja lokaliseerimise kaalutlused
- Paremalt vasakule kirjutatavad keeled (RTL): Kohandatud olekuid saab kasutada komponentide paigutuse ja stiili kohandamiseks RTL-keeltele nagu araabia ja heebrea keel. Näiteks navigatsioonimenüü paigutuse peegeldamine, kui spetsiifiline RTL-olek on aktiivne.
- Ligipääsetavus: Kasutage kohandatud olekuid, et pakkuda täiustatud ligipääsetavusfunktsioone, näiteks fookuses olevate elementide esiletõstmine või alternatiivsete tekstikirjelduste pakkumine, kui kasutaja interaktsiooni olek käivitatakse. Veenduge, et need olekumuutused edastatakse tõhusalt abitehnoloogiatele.
- Kultuurilised disainieelistused: Kohandage komponentide visuaalset ilmet vastavalt kultuurilistele disainieelistustele. Näiteks kasutades erinevaid värviskeeme või ikoonikomplekte vastavalt kasutaja lokaadile või keelele.
Töötamine CSS muutujate ja vahemikupäringutega
@when reeglit saab kasutada ka koos CSS muutujatega, et luua dünaamilisi ja kohandatavaid stiile. Saate rakendada stiile CSS muutuja väärtuse põhjal, võimaldades kasutajatel kohandada teie veebisaidi välimust ilma koodi kirjutamata.
Näide: teemade vahetamine
:root {
--theme-color: #fff;
--text-color: #000;
}
body {
background-color: var(--theme-color);
color: var(--text-color);
}
@when var(--theme-color) = #000 {
body {
--text-color: #fff;
}
}
Selles näites kontrollib --theme-color muutuja body taustavärvi. Kui see on seatud väärtusele #000, muudab @when reegel --text-color väärtuseks #fff, luues tumeda teema. Kasutajad saavad seejärel muuta --theme-color väärtust JavaScripti abil või seades kasutaja stiililehel teise CSS muutuja.
Vahemikupäringud
Vahemikupäringud võimaldavad teil kontrollida, kas väärtus jääb teatud vahemikku. See võib olla kasulik keerukamate tingimuslike stiilide loomiseks.
@when (400px <= width <= 800px) {
.element {
/* Stiilid, mida rakendatakse, kui laius on vahemikus 400px kuni 800px */
}
}
Siiski võib täpne süntaks ja vahemikupäringute tugi @when-i sees varieeruda. Soovitatav on konsulteerida uusimate spetsifikatsioonide ja brauseri ühilduvustabelitega. Konteineripäringud pakuvad sageli suurusepõhiste tingimuste jaoks robustsemat ja paremini toetatud alternatiivi.
Globaalne ligipääsetavus ja kasutajaeelistused
- Kõrge kontrastsusega teemad: Kasutage CSS muutujaid ja
@whenreeglit, et rakendada kõrge kontrastsusega teemasid, mis on mõeldud nägemispuudega kasutajatele. Lubage kasutajatel kohandada värvipaletti ja fondisuurusi vastavalt oma spetsiifilistele vajadustele. - Vähendatud liikumine: Austage kasutaja eelistust vähendatud liikumise osas, kasutades CSS muutujaid animatsioonide ja üleminekute keelamiseks, kui kasutaja on oma operatsioonisüsteemis lubanud seade "vähendatud liikumine".
prefers-reduced-motionmeediapäringut saab kombineerida@when-iga täpsema kontrolli saavutamiseks. - Fondisuuruse kohandamine: Lubage kasutajatel kohandada veebisaidi fondisuurust CSS muutujate abil. Kasutage
@whenreeglit elementide paigutuse ja vahede kohandamiseks, et mahutada erinevaid fondisuurusi, tagades loetavuse ja kasutatavuse kõigile kasutajatele.
Parimad tavad ja kaalutlused
- Veebilehitsejate ĂĽhilduvus:
@whenreegel on endiselt suhteliselt uus ja brauseritugi ei ole veel universaalne. Kontrollige alati brauseri ühilduvustabeleid enne selle kasutamist tootmises. Kaaluge polüfillide või varulahenduste kasutamist vanemate brauserite jaoks. 2024. aasta lõpu seisuga on brauseritugi endiselt piiratud ning sageli on praktilisem lähenemine toetuda@container-ile ja CSS muutujate mõistlikule kasutamisele koos JavaScripti varulahendustega. - Spetsiifilisus: Olge
@whenreegli kasutamisel teadlik CSS-i spetsiifilisusest. Veenduge, et teie tingimuslikud stiilid on piisavalt spetsiifilised, et tühistada kõik vastuolulised stiilid. - Hooldatavus: Kasutage CSS muutujaid ja kommentaare, et muuta oma kood loetavamaks ja hooldatavamaks. Vältige liiga keeruliste tingimuslike reeglite loomist, mida on raske mõista ja siluda.
- Jõudlus: Kuigi
@whenreegel võib parandada jõudlust, vähendades parsitud CSS-i hulka, on oluline seda kasutada mõistlikult. Tingimuslike reeglite liigne kasutamine võib jõudlust negatiivselt mõjutada, eriti vanemates seadmetes. - Progressiivne täiustamine: Kasutage progressiivset täiustamist, et tagada teie veebisaidi hea toimimine isegi siis, kui brauser ei toeta
@whenreeglit. Pakkuge kõigile kasutajatele põhilist, funktsionaalset kogemust ja seejärel täiustage seda järk-järgult brauseritele, mis funktsiooni toetavad.
Tingimusliku stiilimise tulevik
@when reegel kujutab endast olulist sammu edasi CSS-is. See võimaldab väljendusrikkamat ja dünaamilisemat stiilimist, sillutades teed keerukamatele ja reageerivamatele veebirakendustele. Kuna brauseritugi paraneb ja spetsifikatsioon areneb, saab @when reeglist tõenäoliselt veebiarendajate jaoks oluline tööriist.
Edasised arengud CSS Houdinis ja kohandatud olekute standardiseerimine parandavad veelgi @when-i võimekust, võimaldades veelgi detailsemat kontrolli stiilide üle ja sujuvamat integratsiooni JavaScriptiga.
Kokkuvõte
CSS @when reegel pakub võimsat ja paindlikku viisi stiilide tingimuslikuks rakendamiseks konteineripäringute, kohandatud olekute, CSS muutujate ja muude kriteeriumide alusel. Kuigi brauseritugi on alles arenemas, on see väärtuslik tööriist teie arsenalis dünaamiliste ja reageerivate veebidisainide loomiseks, mis kohanduvad erinevate kontekstide ja kasutajaeelistustega. Mõistes @when reegli põhitõdesid ja järgides parimaid tavasid, saate avada selle täieliku potentsiaali ja luua tõeliselt erakordseid kasutajakogemusi. Pidage meeles, et alati tuleb põhjalikult testida erinevates brauserites ja seadmetes, et tagada ühilduvus ja optimaalne jõudlus.
Kuna veeb areneb pidevalt, on uute CSS-funktsioonide, nagu @when, omaksvõtmine ülioluline, et püsida arengu esirinnas ja pakkuda tipptasemel veebikogemusi ülemaailmsele publikule.