Otključajte moć CSS @when pravila za dinamična i responzivna web iskustva. Naučite primjenjivati stilove na temelju različitih uvjeta uz jasne primjere.
CSS @when: Ovladavanje uvjetnim stiliziranjem za moderni web dizajn
U svijetu web razvoja koji se neprestano razvija, sposobnost stvaranja dinamičnih i responzivnih korisničkih sučelja je ključna. CSS, kamen temeljac vizualne prezentacije, nastavlja uvoditi moćne značajke koje osnažuju programere da grade inteligentnije i prilagodljivije web stranice. Jedna takva revolucionarna značajka je @when
at-pravilo, koje omogućuje uvjetno stiliziranje, dopuštajući nam primjenu CSS pravila samo kada su ispunjeni određeni uvjeti. To otvara svijet mogućnosti za stvaranje istinski responzivnih i kontekstualno svjesnih dizajna.
Što je CSS @when?
@when
at-pravilo je moćan dodatak CSS specifikaciji koji radi u kombinaciji s pravilima @media
ili @supports
. Djeluje kao uvjetni blok, što znači da će se CSS deklaracije unutar njegovog opsega primijeniti samo ako se navedeni uvjet procijeni kao istinit. U suštini, pruža detaljniji i izražajniji način za kontrolu kada su određeni stilovi aktivni, nadilazeći tradicionalno uvjetovanje na razini bloka samih @media
upita.
Zamislite ga kao visoko profinjenu `if` naredbu za vaš CSS. Umjesto primjene cijelog skupa stilova na temelju općeg uvjeta, @when
vam omogućuje ciljanje određenih deklaracija unutar pravila, čineći vaše stilove učinkovitijima i lakšima za održavanje.
Sinergija: @when s @media i @supports
Prava snaga @when
pravila ostvaruje se kada se koristi u kombinaciji s postojećim uvjetnim at-pravilima:
1. @when s @media upitima
Ovo je vjerojatno najčešći i najutjecajniji slučaj upotrebe za @when
. Tradicionalno, mogli biste omotati cijela CSS pravila unutar @media
upita. S @when
, sada možete uvjetno primijeniti određene deklaracije unutar pravila na temelju uvjeta medijskih upita.
Primjer: Responzivna tipografija
Recimo da želite prilagoditi veličinu fonta odlomka, ali samo kada je prikazni prozor (viewport) širi od 768 piksela. Bez @when
, to biste mogli učiniti ovako:
.my-paragraph {
font-size: 16px;
}
@media (min-width: 768px) {
.my-paragraph {
font-size: 18px;
}
}
Sada, koristeći @when
, možete postići isti rezultat sažetije i s većom kontrolom:
.my-paragraph {
font-size: 16px;
@when (min-width: 768px) {
font-size: 18px;
}
}
U ovom primjeru:
- Osnovna
font-size
vrijednost od16px
uvijek se primjenjuje. font-size
od18px
primjenjuje se samo kada je širina prikaznog prozora 768 piksela ili veća.
Ovaj pristup je nevjerojatno koristan za fine prilagodbe određenih svojstava na temelju veličine zaslona, orijentacije ili drugih medijskih značajki, bez dupliciranja cijelih skupova pravila.
Globalni primjer: Prilagodba UI elemenata za različite uređaje
Razmotrimo globalnu platformu za e-trgovinu. Kartica proizvoda može prikazivati kompaktan prikaz na mobilnim uređajima, ali detaljniji prikaz na većim zaslonima. Koristeći @when
s @media
, možete elegantno upravljati tim prijelazima:
.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;
}
}
Ovo omogućuje da .product-card
i njegovi unutarnji elementi poput .product-image
progresivno prilagođavaju svoje stilove kako se veličina prikaznog prozora povećava, pružajući prilagođeno iskustvo na širokom rasponu uređaja globalno.
2. @when s @supports upitima
@supports
at-pravilo omogućuje vam provjeru podržava li preglednik određeni par CSS svojstvo-vrijednost. Kombinirajući ga s @when
, možete uvjetno primijeniti stilove samo kada je određena značajka preglednika dostupna.
Primjer: Korištenje nove CSS značajke
Zamislite da želite koristiti eksperimentalno svojstvo backdrop-filter
. Ne podržavaju ga svi preglednici ili starije verzije. Možete koristiti @when
s @supports
kako biste ga graciozno primijenili:
.modal-background {
background-color: rgba(0, 0, 0, 0.5);
@when supports (backdrop-filter: blur(10px)) {
backdrop-filter: blur(10px);
}
}
U ovom slučaju:
background-color
se uvijek primjenjuje kao rezervna opcija (fallback).backdrop-filter
se primjenjuje samo kada preglednik podržava deklaracijubackdrop-filter: blur(10px)
.
Ovo je ključno za progresivno poboljšanje (progressive enhancement), osiguravajući da je vaš dizajn funkcionalan i vizualno privlačan čak i u okruženjima koja ne podržavaju najnovije CSS značajke.
Globalni primjer: Progresivno poboljšanje za animacije
Razmotrite web stranicu sa suptilnim animacijama. Neke napredne animacije mogle bi se oslanjati na novija CSS svojstva poput animation-composition
ili specifičnih funkcija prijelaza (easing functions). Možete koristiti @when
i @supports
kako biste pružili rezervnu opciju ili jednostavniju animaciju za preglednike koji ne podržavaju ta napredna svojstva.
.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); }
}
Ovdje će preglednici koji podržavaju animation-composition: replace
dobiti sofisticiraniju sekvencu animacije, dok će se ostali vratiti na jednostavnije svojstvo transition
, osiguravajući dosljedno, iako različito, iskustvo za korisnike širom svijeta.
3. Kombiniranje @when s više uvjeta
Također možete povezati više uvjeta unutar jednog @when
pravila, stvarajući još specifičniju logiku stiliziranja. To se radi pomoću logičkih operatora kao što su and
, or
i not
.
Primjer: Složena responzivna logika
Zamislimo scenarij u kojem bi se bočna traka trebala sakriti samo na manjim zaslonima, ali samo ako određena korisnička postavka (hipotetski označena klasom na tijelu dokumenta) nije aktivna.
.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;
}
}
Ova razina uvjetnog stiliziranja omogućuje vrlo složena ponašanja korisničkog sučelja prilagođena specifičnim kontekstima i interakcijama korisnika.
Sintaksa i najbolje prakse
Osnovna sintaksa za @when
je jednostavna:
selector {
property: value;
@when (condition) {
property: value;
}
}
Kada se kombinira više uvjeta, sintaksa postaje:
selector {
property: value;
@when (condition1) and (condition2) {
property: value;
}
@when (condition1) or (condition2) {
property: value;
}
@when not (condition) {
property: value;
}
}
Ključne najbolje prakse:
- Dajte prednost čitljivosti: Iako
@when
može učiniti stilove sažetijima, izbjegavajte previše složene ugniježđene uvjete koji bi mogli postati teški za dešifriranje. Po potrebi razdvojite složenu logiku u zasebna pravila. - Progresivno poboljšanje: Uvijek osigurajte gracioznu rezervnu opciju (fallback) za preglednike ili okruženja koja ne podržavaju značajke ciljane vašim
@when
pravilima, posebno kada se koriste s@supports
. - Performanse: Iako je
@when
sam po sebi općenito učinkovit, budite svjesni previše složene uvjetne logike koja bi mogla utjecati na performanse parsiranja, iako to rijetko predstavlja problem pri uobičajenoj upotrebi. - Podrška preglednika: Pratite podršku preglednika za
@when
i njegova prateća at-pravila. Od njegovog uvođenja, prihvaćanje raste, ali je ključno testirati na svim ciljanim preglednicima. Koristite alate poput Can I Use kako biste provjerili najnovije informacije o kompatibilnosti. - Globalni doseg: Kada dizajnirate za globalnu publiku, iskoristite
@when
s@media
kako biste se prilagodili širokom rasponu veličina uređaja i rezolucija prisutnih širom svijeta. Razmotrite i različite mrežne uvjete; mogli biste koristitiprefers-reduced-motion
medijske upite unutar@when
kako biste onemogućili animacije za korisnike koji su to odabrali. - Održivost: Koristite
@when
kako biste povezane stilove držali zajedno. Ako se vrijednost svojstva mijenja na temelju uvjeta, često je lakše za održavanje imati i zadanu i uvjetnu vrijednost unutar istog bloka pravila, umjesto da ih raspršujete po različitim@media
upitima.
Podrška preglednika i budućnost
@when
at-pravilo je relativno nov dodatak CSS krajoliku. Od svog početnog širokog prihvaćanja, podržano je u modernim preglednicima poput Chromea, Firefoxa, Safarija i Edgea. Međutim, ključno je uvijek provjeravati najnovije podatke o kompatibilnosti preglednika za određene verzije i značajke.
Radna skupina W3C CSS nastavlja usavršavati i proširivati CSS mogućnosti. Značajke poput @when
, zajedno s drugim uvjetnim pravilima i ugniježđivanjem, signaliziraju pomak prema programskijim i izražajnijim mogućnostima stiliziranja u CSS-u. Ovaj trend je ključan za izgradnju složenih, prilagodljivih i korisnički prijateljskih web iskustava koja odgovaraju raznolikoj globalnoj bazi korisnika.
Kako web dizajn nastavlja prihvaćati prilagodljivost i personalizaciju, @when
će postati neizostavan alat u arsenalu programera. Njegova sposobnost finog podešavanja stilova na temelju širokog spektra uvjeta, od karakteristika uređaja do mogućnosti preglednika, osnažuje nas da stvaramo sofisticiranija i kontekstualno svjesnija sučelja.
Zaključak
CSS @when
je moćna i elegantna značajka koja značajno poboljšava našu sposobnost pisanja uvjetnih stilova. Iskorištavanjem njegove sinergije s @media
i @supports
, programeri mogu stvoriti responzivnije, prilagodljivije i robusnije web dizajne. Bilo da prilagođavate tipografiju za različite veličine zaslona, uvjetno primjenjujete napredne CSS značajke ili gradite složena interaktivna korisnička sučelja, @when
pruža preciznost i fleksibilnost potrebnu za ispunjavanje zahtjeva modernog web razvoja. Prihvaćanje ove značajke nedvojbeno će dovesti do sofisticiranijih i korisnički usmjerenih digitalnih iskustava za globalnu publiku.
Počnite eksperimentirati s @when
u svojim projektima već danas kako biste izgradili pametnije, prilagodljivije i za budućnost otporne web stranice.