Magyar

Fedezze fel a CSS @when szabályt, egy hatékony funkciót, amely lehetővé teszi a feltételes stílus alkalmazását a böngésző támogatása, a viewport mérete és egyebek alapján. Tanuljon gyakorlati példákkal.

CSS @when Szabály: A Feltételes Stílus Alkalmazás Mesterfoka

A CSS világa folyamatosan fejlődik, egyre hatékonyabb és rugalmasabb módokat kínálva a fejlesztőknek a weboldalak stílusozására. Az egyik ilyen, egyre népszerűbb funkció a @when szabály, más néven CSS Conditional Rules Module Level 1. Ez a szabály lehetővé teszi a CSS stílusok feltételes alkalmazását, bizonyos feltételek teljesülése esetén. Ez egy hatékony eszköz a reszponzív tervezéshez, a funkciófelismeréshez és a robusztusabb és alkalmazkodóbb stíluslapok létrehozásához.

Mi a CSS @when Szabály?

A @when szabály egy feltételes at-rule a CSS-ben, amely lehetővé teszi olyan stílusok definiálását, amelyek csak akkor alkalmazódnak, ha bizonyos feltételek igazak. Tekintsen rá úgy, mint egy if utasításra a CSS-ben. A média lekérdezésektől eltérően, amelyek elsősorban a viewport jellemzőire (képernyőméret, tájolás stb.) összpontosítanak, a @when általánosabb és bővíthetőbb módot kínál a feltételes stílusozás kezelésére. Kiterjeszti a meglévő feltételes at-rule-okat, mint a @supports és a @media.

A @when Használatának Fő Előnyei

A @when Szabály Szintaxisa

A @when szabály alapvető szintaxisa a következő:
@when <condition> {
  /* CSS szabályok, amelyek akkor alkalmazódnak, ha a feltétel igaz */
}

A <condition> bármilyen érvényes logikai kifejezés lehet, amely igazra vagy hamisra értékelődik ki. Ez a kifejezés gyakran a következőket tartalmazza:

Gyakorlati Példák a @when Használatára

Nézzünk meg néhány gyakorlati példát a @when szabály erejének és sokoldalúságának illusztrálására.

1. Reszponzív Tervezés @when-nel és Média Lekérdezésekkel

A @when leggyakoribb felhasználási módja a reszponzív tervezés, ahol a stílusokat a képernyőméret alapján állítja be. Bár a média lekérdezések önmagukban is elérhetik ezt, a @when strukturáltabb és olvashatóbb megközelítést kínál, különösen összetett feltételek esetén.
@when (min-width: 768px) and (max-width: 1023px) {
  body {
    font-size: 18px;
    line-height: 1.6;
  }
  .container {
    width: 720px;
    margin: 0 auto;
  }
}

Ebben a példában a @when blokkon belüli stílusok csak akkor alkalmazódnak, ha a képernyőszélesség 768px és 1023px között van (tipikus táblagép méret). Ez egy világos és tömör módot kínál a stílusok definiálására a konkrét viewport tartományokhoz.

Nemzetköziesítési megjegyzés: A reszponzív tervezés kritikus fontosságú a globális közönség számára. Vegye figyelembe a különböző régiókban eltérő képernyőméreteket. Például a mobilhasználat magasabb néhány országban, ami még fontosabbá teszi a mobil-first tervezést.

2. Funkciófelismerés @when-nel és @supports-szal

A @when kombinálható a @supports-szal a stílusok alkalmazásához csak akkor, ha egy adott CSS funkciót támogat a böngésző. Ez lehetővé teszi a webhely progresszív fejlesztését, jobb élményt nyújtva a modern böngészőkkel rendelkező felhasználóknak, miközben továbbra is megőrzi a kompatibilitást a régebbi böngészőkkel.

@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 {
    /* Visszaállítási stílusok a rácsot nem támogató böngészőkhöz */
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
  }
  .item {
    width: calc(50% - 10px); /* Szélesség beállítása régebbi böngészőkhöz */
  }
}

Itt a @supports segítségével ellenőrizzük, hogy a böngésző támogatja-e a CSS Grid Layoutot. Ha igen, akkor rács alapú stílusokat alkalmazunk a .container-re. Ha nem, akkor visszaállítási stílusokat biztosítunk a flexbox használatával, hogy hasonló elrendezést érjünk el a régebbi böngészőkben.

Globális akadálymentesítési megjegyzés: A funkciófelismerés fontos az akadálymentesítés szempontjából. A régebbi böngészők nem támogatják az újabb ARIA attribútumokat vagy a szematikus HTML5 elemeket. Biztosítson megfelelő visszaállításokat annak érdekében, hogy a tartalom továbbra is hozzáférhető maradjon.

3. Média Lekérdezések és Funkció Lekérdezések Kombinálása

A @when igazi ereje abban rejlik, hogy képes kombinálni a média lekérdezéseket és a funkció lekérdezéseket összetettebb és árnyaltabb feltételes stílusozási szabályok létrehozásához.

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

Ebben a példában a .modal elem csak akkor kap homályos hátteret, ha a képernyőszélesség legalább 768px és a böngésző támogatja a backdrop-filter tulajdonságot. Ez lehetővé teszi vizuálisan vonzó effektusok létrehozását a modern böngészőkben, miközben elkerüli a lehetséges teljesítményproblémákat vagy a megjelenítési hibákat a régebbi böngészőkben.

4. Stílusozás Egyéni Tulajdonságok (CSS Változók) Alapján

A @when CSS egyéni tulajdonságokkal (más néven CSS változókkal) együtt is használható dinamikus és állapotvezérelt stílusozás létrehozásához. A JavaScript segítségével frissítheti az egyéni tulajdonság értékét, majd a @when segítségével különböző stílusokat alkalmazhat az érték alapján.

Először definiáljon egy egyéni tulajdonságot:

:root {
  --theme-color: #007bff; /* Alapértelmezett témaszín */
  --is-dark-mode: false;
}

Ezután a @when segítségével alkalmazza a stílusokat az egyéni tulajdonság értéke alapján:

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

Végül a JavaScript segítségével kapcsolja be és ki a --is-dark-mode egyéni tulajdonság értékét:

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

Ez lehetővé teszi a felhasználók számára, hogy váltsanak a világos és a sötét téma között, a CSS pedig dinamikusan frissül az egyéni tulajdonság értéke alapján. Vegye figyelembe, hogy a CSS változók közvetlen összehasonlítása a `@when`-ben nem feltétlenül támogatott univerzálisan a böngészők között. Ehelyett szükség lehet egy kerülő megoldásra egy média lekérdezéssel, amely egy nem nulla értéket ellenőriz:

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

Azonban győződjön meg arról, hogy az egyéni tulajdonság numerikus értéket tartalmaz a megfelelő működés érdekében.

Akadálymentesítési megjegyzés: Alternatív témák (pl. sötét mód) biztosítása kulcsfontosságú az akadálymentesítés szempontjából. A látássérültek számára előnyös lehet a nagy kontrasztú téma. Győződjön meg arról, hogy a témaváltó billentyűzettel és képernyőolvasókkal is elérhető.

5. Stílusozás Adatattribútumok Alapján

A @when adatattribútumokkal is használható az elemek stílusozásához az adatértékeik alapján. Ez hasznos lehet dinamikus felületek létrehozásához, ahol az elemek megjelenése a felhasználói interakciók vagy adatok frissítései alapján változik.

Például, tegyük fel, hogy van egy feladatlista, és minden feladat rendelkezik egy data-status attribútummal, amely jelzi a feladat állapotát (pl. "todo", "in-progress", "completed"). A @when segítségével minden feladatot eltérően stílusozhat az állapota alapján.

[data-status="todo"] {
  /* Alapértelmezett stílusok a teendő feladatokhoz */
  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;
  }
}

Megjegyzés: Az attribute() tesztfeltétel támogatása korlátozott lehet, vagy nem teljesen valósul meg az összes böngészőben jelenleg. Mindig alaposan tesztelje.

Böngésző Kompatibilitás és Polyfillek

2024 végén a @when szabály böngésző támogatása még mindig fejlődik. Bár sok modern böngésző támogatja az alapvető funkcionalitást, néhány régebbi böngésző nem. Ezért kulcsfontosságú a kompatibilitási táblázatok ellenőrzése és a megfelelő visszaállítások vagy polyfillek használata, ahol szükséges.

Mindig konzultáljon olyan forrásokkal, mint a Can I use... a @when és a kapcsolódó funkciók aktuális böngésző támogatási állapotának ellenőrzéséhez.

Bevált Gyakorlatok a @when Használatához

Következtetés

A @when szabály egy hatékony kiegészítő a CSS eszköztárához, amely rugalmasabb és kifejezőbb módot kínál a fejlesztőknek a stílusok feltételes alkalmazására. A média lekérdezésekkel, a funkció lekérdezésekkel és a CSS egyéni tulajdonságokkal kombinálva robusztusabb, alkalmazkodóbb és karbantarthatóbb stíluslapokat hozhat létre. Bár a böngésző támogatása még mindig fejlődik, a @when egy olyan funkció, amelyet érdemes felfedezni és beépíteni a modern webfejlesztési munkafolyamatba.

Ahogy a web folyamatosan fejlődik, a @when-hez hasonló funkciók elsajátítása elengedhetetlen lesz ahhoz, hogy lebilincselő, akadálymentes és nagy teljesítményű élményeket teremtsünk a felhasználók számára szerte a világon. Használja ki a feltételes stílusozás erejét, és fedezzen fel új lehetőségeket a CSS fejlesztésében.