Slovenčina

Preskúmajte pravidlo CSS @when, výkonnú funkciu umožňujúcu podmienené použitie štýlov na základe podpory prehliadača, veľkosti viewportu a ďalších.

Pravidlo CSS @when: Majstrovstvo podmieneného použitia štýlov

Svet CSS sa neustále vyvíja a ponúka vývojárom výkonnejšie a flexibilnejšie spôsoby štýlovania webových stránok. Jednou z takýchto funkcií, ktorá si získava popularitu, je pravidlo @when, známe aj ako CSS Conditional Rules Module Level 1. Toto pravidlo vám umožňuje aplikovať CSS štýly podmienene, na základe splnenia špecifických podmienok. Je to výkonný nástroj pre responzívny dizajn, detekciu funkcií a vytváranie robustnejších a prispôsobivejších štýlov.

Čo je pravidlo CSS @when?

Pravidlo @when je podmienené at-pravidlo v CSS, ktoré vám umožňuje definovať štýly, ktoré sa aplikujú iba v prípade, že sú splnené určité podmienky. Predstavte si to ako if príkaz pre váš CSS. Na rozdiel od mediálnych dopytov, ktoré sa primárne zameriavajú na charakteristiky viewportu (veľkosť obrazovky, orientácia atď.), @when poskytuje všeobecnejší a rozšíriteľnejší spôsob spracovania podmieneného štýlovania. Rozširuje existujúce podmienené at-pravidlá, ako sú @supports a @media.

Kľúčové výhody používania @when

Syntax pravidla @when

Základná syntax pravidla @when je nasledovná:
@when <podmienka> {
  /* Pravidlá CSS na aplikovanie, keď je podmienka pravdivá */
}

<podmienka> môže byť akýkoľvek platný booleovský výraz, ktorý sa vyhodnotí ako pravda alebo nepravda. Tento výraz často zahŕňa:

Praktické príklady @when v akcii

Pozrime sa na niektoré praktické príklady, ktoré ilustrujú silu a všestrannosť pravidla @when.

1. Responzívny dizajn s @when a mediálnymi dopytmi

Najbežnejším prípadom použitia @when je responzívny dizajn, kde upravujete štýly na základe veľkosti obrazovky. Aj keď mediálne dopyty to dokážu samy o sebe, @when poskytuje štrukturovanejší a čitateľnejší prístup, najmä pri práci so zložitými podmienkami.

@when (min-width: 768px) and (max-width: 1023px) {
  body {
    font-size: 18px;
    line-height: 1.6;
  }
  .container {
    width: 720px;
    margin: 0 auto;
  }
}

V tomto príklade sa štýly v bloku @when aplikujú iba vtedy, keď je šírka obrazovky medzi 768px a 1023px (typická veľkosť tabletu). To poskytuje jasný a stručný spôsob definovania štýlov pre špecifické rozsahy viewportov.

Poznámka k internacionalizácii: Responzívny dizajn je kritický pre globálne publikum. Zvážte meniace sa veľkosti obrazoviek v rôznych regiónoch. Napríklad mobilné používanie je v niektorých krajinách vyššie, čo robí mobilný dizajn ešte dôležitejším.

2. Detekcia funkcií s @when a @supports

@when možno skombinovať s @supports na aplikovanie štýlov iba vtedy, keď prehliadač podporuje konkrétnu CSS funkciu. To vám umožňuje progresívne vylepšovať vašu webovú stránku, poskytovať lepšie skúsenosti používateľom s modernými prehliadačmi a zároveň zachovať kompatibilitu so staršími.

@when supports(display: grid) {
  .container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    grid-gap: 20px;
  }
}

@when not supports(display: grid) {
  .container {
    /* Záložné štýly pre prehliadače, ktoré nepodporujú grid */
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
  }
  .item {
    width: calc(50% - 10px); /* Upraviť šírku pre staršie prehliadače */
  }
}

Tu používame @supports na kontrolu, či prehliadač podporuje CSS Grid Layout. Ak áno, aplikujeme štýly založené na mriežke na .container. Ak nie, poskytujeme záložné štýly pomocou flexboxu, aby sme zabezpečili podobné rozloženie v starších prehliadačoch.

Globálna poznámka k prístupnosti: Detekcia funkcií je dôležitá pre prístupnosť. Staršie prehliadače nemusia podporovať novšie ARIA atribúty alebo sémantické HTML5 prvky. Poskytnite vhodné zálohy, aby obsah zostal prístupný.

3. Kombinovanie mediálnych dopytov a dopytov po funkciách

Skutočná sila @when spočíva v jeho schopnosti kombinovať mediálne dopyty a dopyty po funkciách na vytváranie zložitejších a jemnejších pravidiel podmieneného štýlovania.

@when (min-width: 768px) and supports(backdrop-filter: blur(10px)) {
  .modal {
    background-color: rgba(255, 255, 255, 0.8);
    backdrop-filter: blur(10px);
  }
}

V tomto príklade sa prvok .modal bude rozmazávať iba vtedy, keď je šírka obrazovky najmenej 768px a prehliadač podporuje vlastnosť backdrop-filter. To vám umožňuje vytvárať vizuálne príťažlivé efekty v moderných prehliadačoch a zároveň sa vyhnúť možným problémom s výkonom alebo chybám vykresľovania v starších.

4. Štýlovanie založené na vlastných vlastnostiach (CSS premenné)

@when možno použiť aj v spojení s CSS Custom Properties (tiež známe ako CSS premenné) na vytváranie dynamických štýlov založených na stave. Môžete použiť JavaScript na aktualizáciu hodnoty vlastnej vlastnosti a potom použiť @when na aplikovanie rôznych štýlov na základe tejto hodnoty.

Najprv definujte vlastnú vlastnosť:

:root {
  --theme-color: #007bff; /* Predvolená farba témy */
  --is-dark-mode: false;
}

Potom použite @when na aplikovanie štýlov na základe hodnoty vlastnej vlastnosti:

@when var(--is-dark-mode) = true {
  body {
    background-color: #333;
    color: #fff;
  }
  a {
    color: #ccc;
  }
}

Nakoniec použite JavaScript na prepínanie hodnoty vlastnej vlastnosti --is-dark-mode:

document.getElementById('darkModeToggle').addEventListener('click', function() {
  document.documentElement.style.setProperty('--is-dark-mode', this.checked);
});

To umožňuje používateľom prepínať medzi svetlými a tmavými témami, pričom CSS sa dynamicky aktualizuje na základe hodnoty vlastnej vlastnosti. Všimnite si, že priame porovnávanie CSS premenných v `@when` nemusí byť univerzálne podporované vo všetkých prehliadačoch. Namiesto toho možno budete potrebovať riešenie s mediálnym dopytom, ktorý kontroluje nenulovú hodnotu:

@when ( --is-dark-mode > 0 ) { ... }

Avšak, aby to správne fungovalo, uistite sa, že vlastná vlastnosť má numerickú hodnotu.

Poznámka k prístupnosti: Poskytovanie alternatívnych tém (napr. tmavý režim) je kľúčové pre prístupnosť. Používatelia so zrakovým postihnutím môžu mať prospech z tém s vysokým kontrastom. Uistite sa, že váš prepínač tém je prístupný prostredníctvom klávesnice a čítačiek obrazovky.

5. Štýlovanie založené na dátových atribútoch

@when môžete použiť aj s dátovými atribútmi na štýlovanie prvkov na základe ich dátových hodnôt. To môže byť užitočné pri vytváraní dynamických rozhraní, kde sa prvky menia vzhľadom na interakciu používateľa alebo aktualizácie dát.

Napríklad, povedzme, že máte zoznam úloh a každá úloha má dátový atribút data-status, ktorý indikuje jej stav (napr. "todo", "in-progress", "completed"). Môžete použiť @when na odlišné štýlovanie každej úlohy na základe jej stavu.

[data-status="todo"] {
  /* Predvolené štýly pre todo úlohy */
  color: #333;
}

@when attribute(data-status string equals "in-progress") {
  [data-status="in-progress"] {
    color: orange;
    font-style: italic;
  }
}

@when attribute(data-status string equals "completed") {
  [data-status="completed"] {
    color: green;
    text-decoration: line-through;
  }
}

Poznámka: podpora pre testovacie podmienky pomocou attribute() môže byť obmedzená alebo zatiaľ nie plne implementovaná vo všetkých prehliadačoch. Vždy dôkladne testujte.

Kompatibilita prehliadačov a polyfily

Koncom roka 2024 je podpora prehliadačov pre pravidlo @when stále vo vývoji. Aj keď mnohé moderné prehliadače podporujú základnú funkčnosť, niektoré staršie prehliadače to nemusia. Preto je kľúčové kontrolovať tabuľky kompatibility a používať vhodné zálohy alebo polyfily tam, kde je to potrebné.

Vždy sa obráťte na zdroje ako Can I use..., aby ste skontrolovali aktuálny stav podpory @when a súvisiacich funkcií v prehliadačoch.

Najlepšie postupy pri používaní @when

Záver

Pravidlo @when je silným doplnkom nástrojov CSS, ktoré vývojárom ponúkajú flexibilnejší a expresívnejší spôsob podmieneného aplikovania štýlov. Kombináciou s mediálnymi dopytmi, dopytmi po funkciách a CSS Custom Properties môžete vytvárať robustnejšie, prispôsobivejšie a ľahšie udržiavateľné štýly. Aj keď sa podpora prehliadačov stále vyvíja, @when je funkcia, ktorú sa oplatí preskúmať a začleniť do vášho moderného pracovného postupu vývoja webu.

Ako sa web neustále vyvíja, zvládnutie funkcií ako @when bude nevyhnutné pre vytváranie pútavých, prístupných a výkonných zážitkov pre používateľov po celom svete. Prijmite silu podmieneného štýlovania a odomknite nové možnosti vo svojom CSS vývoji.