Atskleiskite CSS @when galią dinamiškoms ir pritaikomoms interneto patirtims. Išmokite taikyti stilius pagal įvairias sąlygas su aiškiais pavyzdžiais.
CSS @when: sąlyginio stiliaus kūrimo įvaldymas moderniam interneto dizainui
Nuolat besikeičiančioje interneto kūrimo srityje gebėjimas kurti dinamiškas ir pritaikomas vartotojo sąsajas yra itin svarbus. CSS, vizualinio pateikimo kertinis akmuo, toliau pristato galingas funkcijas, kurios suteikia kūrėjams galimybę kurti išmanesnes ir labiau prisitaikančias svetaines. Viena iš tokių novatoriškų funkcijų yra @when
taisyklė, kuri leidžia taikyti sąlyginį stilių, suteikdama mums galimybę taikyti CSS taisykles tik tada, kai tenkinamos konkrečios sąlygos. Tai atveria daugybę galimybių kurti tikrai pritaikomus ir kontekstą suprantančius dizainus.
Kas yra CSS @when?
@when
taisyklė yra galingas CSS specifikacijos papildymas, veikiantis kartu su @media
arba @supports
taisyklėmis. Ji veikia kaip sąlyginis blokas, o tai reiškia, kad jos apimtyje esančios CSS deklaracijos bus taikomos tik tada, jei nurodyta sąlyga bus teisinga. Iš esmės, tai suteikia detalesnį ir išraiškingesnį būdą valdyti, kada tam tikri stiliai yra aktyvūs, peržengiant tradicinį bloko lygio sąlygojimą, kurį siūlo vien @media
užklausos.
Galvokite apie tai kaip apie labai ištobulintą `if` sakinį jūsų CSS. Užuot taikius visą stilių rinkinį pagal plačią sąlygą, @when
leidžia jums taikyti konkrečias deklaracijas taisyklės viduje, todėl jūsų stilių aprašai tampa efektyvesni ir lengviau prižiūrimi.
Sinergija: @when su @media ir @supports
Tikroji @when
galia atsiskleidžia, kai ji naudojama kartu su esamomis sąlyginėmis taisyklėmis:
1. @when su @media užklausomis
Tai, be abejo, yra labiausiai paplitęs ir įtakingiausias @when
naudojimo atvejis. Tradiciškai, jūs galėtumėte apgaubti ištisas CSS taisykles @media
užklausa. Su @when
dabar galite sąlygiškai taikyti konkrečias deklaracijas taisyklės viduje, remdamiesi medijos užklausų sąlygomis.
Pavyzdys: pritaikoma tipografija
Tarkime, norite pakoreguoti pastraipos šrifto dydį, bet tik tada, kai peržiūros sritis yra platesnė nei 768 pikseliai. Be @when
, tai galėtumėte padaryti taip:
.my-paragraph {
font-size: 16px;
}
@media (min-width: 768px) {
.my-paragraph {
font-size: 18px;
}
}
Dabar, naudodami @when
, galite pasiekti tą patį rezultatą glaustiau ir su didesne kontrole:
.my-paragraph {
font-size: 16px;
@when (min-width: 768px) {
font-size: 18px;
}
}
Šiame pavyzdyje:
- Bazinis
font-size
16px
yra taikomas visada. font-size
18px
yra taikomas tik tada, kai peržiūros srities plotis yra 768 pikseliai ar daugiau.
Šis metodas yra neįtikėtinai naudingas atliekant smulkius konkrečių savybių pakeitimus, atsižvelgiant į ekrano dydį, orientaciją ar kitas medijos savybes, nedubliuojant ištisų taisyklių rinkinių.
Globalus pavyzdys: vartotojo sąsajos elementų pritaikymas skirtingiems įrenginiams
Įsivaizduokite pasaulinę elektroninės komercijos platformą. Produkto kortelė mobiliuosiuose įrenginiuose gali rodyti kompaktišką vaizdą, o didesniuose ekranuose – išsamesnį. Naudodami @when
su @media
, galite elegantiškai valdyti šiuos perėjimus:
.product-card {
padding: 10px;
text-align: center;
@when (min-width: 600px) {
padding: 20px;
text-align: left;
}
@when (min-width: 1024px) {
padding: 30px;
display: flex;
align-items: center;
}
}
.product-image {
width: 100%;
height: 150px;
@when (min-width: 600px) {
width: 200px;
height: 200px;
}
@when (min-width: 1024px) {
width: 250px;
height: 250px;
margin-right: 20px;
}
}
Tai leidžia .product-card
ir jo vidiniams elementams, pvz., .product-image
, laipsniškai pritaikyti savo stilius didėjant peržiūros srities dydžiui, taip užtikrinant pritaikytą patirtį įvairiuose įrenginiuose visame pasaulyje.
2. @when su @supports užklausomis
@supports
taisyklė leidžia patikrinti, ar naršyklė palaiko konkrečią CSS savybės ir vertės porą. Derindami ją su @when
, galite sąlygiškai taikyti stilius tik tada, kai yra prieinama tam tikra naršyklės funkcija.
Pavyzdys: naujos CSS savybės naudojimas
Įsivaizduokite, kad norite naudoti eksperimentinę backdrop-filter
savybę. Ne visos naršyklės ar senesnės jų versijos tai palaiko. Galite naudoti @when
su @supports
, kad ją taikytumėte sklandžiai:
.modal-background {
background-color: rgba(0, 0, 0, 0.5);
@when supports (backdrop-filter: blur(10px)) {
backdrop-filter: blur(10px);
}
}
Šiuo atveju:
background-color
yra visada taikoma kaip atsarginis variantas.backdrop-filter
yra taikomas tik tada, kai naršyklė palaikobackdrop-filter: blur(10px)
deklaraciją.
Tai yra labai svarbu laipsniškam tobulinimui (progressive enhancement), užtikrinant, kad jūsų dizainas būtų funkcionalus ir vizualiai patrauklus net tose aplinkose, kurios nepalaiko naujausių CSS funkcijų.
Globalus pavyzdys: laipsniškas animacijų tobulinimas
Apsvarstykite svetainę su subtiliomis animacijomis. Kai kurios pažangesnės animacijos gali priklausyti nuo naujesnių CSS savybių, tokių kaip animation-composition
ar specifinių lėtėjimo funkcijų. Galite naudoti @when
ir @supports
, kad pateiktumėte atsarginį variantą arba paprastesnę animaciją naršyklėms, kurios nepalaiko šių pažangių savybių.
.animated-element {
transform: translateX(0);
transition: transform 0.5s ease-in-out;
@when supports (animation-composition: replace) {
/* More advanced animation properties or sequences */
animation: slideIn 1s forwards;
animation-composition: replace;
animation-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
}
}
@keyframes slideIn {
from { transform: translateX(-100%); }
to { transform: translateX(0); }
}
Čia naršyklės, palaikančios animation-composition: replace
, gaus sudėtingesnę animacijos seką, o kitos grįš prie paprastesnės transition
savybės, užtikrindamos nuoseklią, nors ir įvairią, patirtį vartotojams visame pasaulyje.
3. @when derinimas su keliomis sąlygomis
Taip pat galite sujungti kelias sąlygas vienoje @when
taisyklėje, sukurdami dar konkretesnę stiliaus logiką. Tai daroma naudojant loginius operatorius, tokius kaip and
, or
ir not
.
Pavyzdys: sudėtinga pritaikoma logika
Įsivaizduokime scenarijų, kai šoninė juosta turėtų būti paslėpta tik mažesniuose ekranuose, bet tik tuo atveju, jei nėra aktyvus konkretus vartotojo nustatymas (hipotetiškai nurodytas klase ant body elemento).
.sidebar {
display: block;
width: 250px;
/* Hide sidebar on small screens AND not in preference mode */
@when (max-width: 767px) and not (.no-sidebar-on-mobile) {
display: none;
}
/* Show sidebar on larger screens OR if preference mode is active on small screens */
@when (min-width: 768px) or (.sidebar-on-mobile) {
display: block;
}
}
Šis sąlyginio stiliaus lygis leidžia sukurti labai sudėtingą vartotojo sąsajos elgseną, pritaikytą konkretiems kontekstams ir vartotojo sąveikoms.
Sintaksė ir geriausios praktikos
Pagrindinė @when
sintaksė yra paprasta:
selector {
property: value;
@when (condition) {
property: value;
}
}
Derinant kelias sąlygas, sintaksė tampa tokia:
selector {
property: value;
@when (condition1) and (condition2) {
property: value;
}
@when (condition1) or (condition2) {
property: value;
}
@when not (condition) {
property: value;
}
}
Pagrindinės geriausios praktikos:
- Teikite pirmenybę skaitomumui: nors
@when
gali padaryti stilius glaustesnius, venkite pernelyg sudėtingų įdėtų sąlygų, kurias gali būti sunku iššifruoti. Jei reikia, sudėtingą logiką išskaidykite į atskiras taisykles. - Laipsniškas tobulinimas: visada pateikite sklandų atsarginį variantą naršyklėms ar aplinkoms, kurios nepalaiko jūsų
@when
taisyklėmis apibrėžtų funkcijų, ypač kai naudojama su@supports
. - Našumas: nors pati
@when
taisyklė paprastai yra efektyvi, būkite atidūs pernelyg sudėtingai sąlyginei logikai, kuri gali paveikti analizės našumą, nors tai retai tampa problema esant tipiniam naudojimui. - Naršyklių palaikymas: stebėkite naršyklių palaikymą
@when
ir susijusioms taisyklėms. Nuo jos įvedimo, pritaikymas auga, tačiau būtina testuoti visose tikslinėse naršyklėse. Naudokite įrankius, tokius kaip „Can I Use“, kad patikrintumėte naujausią suderinamumo informaciją. - Pasaulinis pasiekiamumas: kuriant dizainą pasaulinei auditorijai, išnaudokite
@when
su@media
, kad prisitaikytumėte prie didžiulės įrenginių dydžių ir raiškų įvairovės visame pasaulyje. Taip pat atsižvelkite į skirtingas tinklo sąlygas; galite naudotiprefers-reduced-motion
medijos užklausas@when
taisyklėje, kad išjungtumėte animacijas vartotojams, kurie to pageidavo. - Priežiūros paprastumas: naudokite
@when
, kad susiję stiliai būtų kartu. Jei savybės vertė keičiasi priklausomai nuo sąlygos, dažnai yra lengviau prižiūrėti, kai ir numatytoji, ir sąlyginė vertės yra tame pačiame taisyklės bloke, o ne išmėtytos po skirtingas@media
užklausas.
Naršyklių palaikymas ir ateities perspektyvos
@when
taisyklė yra gana naujas priedas CSS pasaulyje. Nuo jos pradinio plataus pritaikymo, ją palaiko modernios naršyklės, tokios kaip „Chrome“, „Firefox“, „Safari“ ir „Edge“. Tačiau visada svarbu patikrinti naujausius naršyklių suderinamumo duomenis konkrečioms versijoms ir funkcijoms.
W3C CSS darbo grupė toliau tobulina ir plečia CSS galimybes. Tokios funkcijos kaip @when
, kartu su kitomis sąlyginėmis taisyklėmis ir įdėjimu (nesting), rodo poslinkį link programiškesnių ir išraiškingesnių stiliaus galimybių CSS. Ši tendencija yra gyvybiškai svarbi kuriant sudėtingas, prisitaikančias ir patogias naudoti interneto patirtis, skirtas įvairiai pasaulinei vartotojų bazei.
Interneto dizainui toliau priimant prisitaikymą ir personalizavimą, @when
taps nepakeičiamu įrankiu kūrėjo arsenale. Jos gebėjimas tiksliai suderinti stilius pagal platų sąlygų spektrą, nuo įrenginio charakteristikų iki naršyklės galimybių, suteikia mums galią kurti sudėtingesnes ir kontekstą suprantančias sąsajas.
Išvada
CSS @when
yra galinga ir elegantiška funkcija, kuri ženkliai pagerina mūsų gebėjimą rašyti sąlyginius stilius. Išnaudodami jos sinergiją su @media
ir @supports
, kūrėjai gali kurti labiau pritaikomus, adaptyvius ir patikimus interneto dizainus. Nesvarbu, ar koreguojate tipografiją skirtingiems ekrano dydžiams, sąlygiškai taikote pažangias CSS funkcijas, ar kuriate sudėtingas interaktyvias vartotojo sąsajas, @when
suteikia tikslumą ir lankstumą, reikalingą atitikti šiuolaikinio interneto kūrimo reikalavimus. Šios funkcijos pritaikymas neabejotinai lems sudėtingesnes ir į vartotoją orientuotas skaitmenines patirtis pasaulinei auditorijai.
Pradėkite eksperimentuoti su @when
savo projektuose jau šiandien, kad kurtumėte išmanesnes, labiau prisitaikančias ir ateičiai paruoštas svetaines.