Čeština

Komplexní průvodce relativní syntaxí barev v CSS se zaměřením na barevné prostory HSL a Lab, který umožňuje webovým designérům vytvářet dynamická a přístupná barevná schémata.

Demystifikace relativní syntaxe barev v CSS: Barevné prostory HSL a Lab pro globální webový design

Svět webového designu se neustále vyvíjí a s ním i nástroje a techniky, které používáme k vytváření vizuálně přitažlivých a přístupných zážitků. Jedním z nejzajímavějších nedávných přírůstků do CSS je Relativní syntaxe barev (Relative Color Syntax). Tato výkonná funkce umožňuje manipulovat s barvami přímo v CSS, což usnadňuje a zpružňuje tvorbu dynamických motivů, jemných variací a přístupných designů. Tento článek se podrobně zabývá relativní syntaxí barev se zaměřením na barevné prostory HSL a Lab a ukazuje, jak je můžete využít pro své projekty po celém světě.

Co je to relativní syntaxe barev v CSS?

Před zavedením relativní syntaxe barev se s barvami v CSS často manipulovalo pomocí preprocesorů jako Sass nebo Less, nebo s využitím JavaScriptu. Relativní syntaxe barev to mění tím, že umožňuje upravovat existující barvy přímo v pravidlech CSS. Dělá to tak, že odkazuje na jednotlivé složky barvy (jako je odstín, sytost a světlost v HSL) a aplikuje na ně matematické operace. To znamená, že můžete zesvětlit, ztmavit, zvýšit nebo snížit sytost nebo změnit odstín barvy na základě její aktuální hodnoty, a to vše bez nutnosti předem definovat několik barevných variant.

Syntaxe je postavena na funkci color(), která umožňuje specifikovat barevný prostor (jako hsl, lab, lch, rgb nebo oklab), základní barvu k úpravě a požadované změny. Například:

.element { color: color(hsl red calc(h + 30) s l); }

Tento úryvek kódu vezme červenou barvu, použije barevný prostor hsl a zvýší odstín o 30 stupňů. Písmena h, s a l představují stávající hodnoty odstínu, sytosti a světlosti. Funkce calc() je klíčová pro provádění matematických operací.

Proč HSL a Lab?

Ačkoli relativní syntaxe barev funguje s různými barevnými prostory, HSL a Lab nabízejí zřetelné výhody pro manipulaci s barvami a přístupnost. Podívejme se proč:

HSL (Odstín, Sytost, Světlost)

HSL je cylindrický barevný prostor, který intuitivně reprezentuje barvy na základě lidského vnímání. Je definován třemi složkami:

Výhody HSL:

Příklad: Vytvoření tmavého motivu (Dark Mode)

Řekněme, že barvou vaší značky je #007bff (zářivě modrá). Pomocí HSL můžete vytvořit tmavý motiv, který zachová podstatu značky a zároveň bude šetrnější k očím za špatných světelných podmínek.

:root { --brand-color: #007bff; --brand-color-hsl: color(oklch #007bff h s l); --bg-color: #fff; --text-color: #000; } @media (prefers-color-scheme: dark) { :root { --bg-color: #121212; /* Tmavě šedá */ --text-color: #fff; --brand-color: color(hsl var(--brand-color) h calc(s * 0.8) calc(l * 1.2)); /* Mírně desaturovaná a zesvětlená barva značky */ } } body { background-color: var(--bg-color); color: var(--text-color); } .brand-button { background-color: var(--brand-color); color: #fff; }

V tomto příkladu kontrolujeme, zda uživatel preferuje tmavé barevné schéma. Pokud ano, použijeme relativní syntaxi barev k mírnému snížení sytosti a zesvětlení barvy značky pro lepší kontrast s tmavým pozadím. Tím je zajištěno, že identita značky zůstane konzistentní a zároveň se zlepší uživatelský zážitek v tmavém režimu.

Lab (Světlost, a, b)

Lab (nebo CIELAB) je barevný prostor navržený tak, aby byl percepčně uniformní. To znamená, že změna hodnot barvy odpovídá podobné změně ve vnímaném rozdílu barev, bez ohledu na výchozí barvu. Je definován třemi složkami:

Výhody Lab:

Příklad: Zlepšení barevného kontrastu pro přístupnost

Zajištění dostatečného barevného kontrastu je pro přístupnost klíčové. Řekněme, že máte barvu textu a barvu pozadí, které úplně nesplňují požadavek WCAG AA na kontrastní poměr (4,5:1). Pomocí Lab můžete upravit světlost barvy textu, dokud tento požadavek nesplní.

Poznámka: Přestože přímá manipulace s kontrastním poměrem není v CSS pomocí relativní syntaxe barev možná, můžeme ji použít k úpravě světlosti a poté výsledek ověřit nástrojem pro kontrolu kontrastu.

.text { color: var(--text-color); background-color: var(--bg-color); } :root { --text-color: #333; --bg-color: #eee; } /*Příklad: Toto ve skutečnosti nepočítá kontrastní poměr přímo.*/ /*Je to koncepční příklad úpravy světlosti*/ .accessible-text { --current-text-color: var(--text-color); color: color(lab var(--current-text-color) calc(l + 10) a b); /* Zesvětlit text o 10 jednotek. To bude mít účinek jen do určité míry, pokud je hodnota L barvy textu blízko 100. Pro ztmavení by se odečítalo*/ }

V tomto příkladu se pokoušíme zesvětlit barvu textu, abychom zlepšili kontrast. Protože v CSS nemůžeme vypočítat kontrastní poměr, musíme výsledek po úpravě zkontrolovat a podle potřeby doladit.

Oklab: Vylepšení oproti Lab

Oklab je relativně nový barevný prostor navržený tak, aby řešil některé vnímané nedostatky Lab. Cílí na ještě lepší percepční uniformitu, což usnadňuje předvídání, jak změny hodnot barvy ovlivní vnímanou barvu. V mnoha případech nabízí Oklab plynulejší a přirozenější způsob úpravy barev ve srovnání s Lab, zejména při práci se sytostí a světlostí.

Použití Oklab s relativní syntaxí barev je podobné jako použití Lab. Jednoduše specifikujete oklab jako barevný prostor:

.element { color: color(oklab #ff0000 calc(l * 1.1) a b); /*Zesvětlit barvu o 10 %*/ }

Praktické příklady a případy použití

Relativní syntaxe barev s HSL a Lab otevírá širokou škálu možností pro webový design. Zde je několik praktických příkladů:

Příklad: Generování barevné palety pomocí HSL

:root { --base-color: #29abe2; /* Světle modrá */ --complementary-color: color(hsl var(--base-color) calc(h + 180) s l); --analogous-color-1: color(hsl var(--base-color) calc(h + 30) s l); --analogous-color-2: color(hsl var(--base-color) calc(h - 30) s l); --triadic-color-1: color(hsl var(--base-color) calc(h + 120) s l); --triadic-color-2: color(hsl var(--base-color) calc(h - 120) s l); } .base { background-color: var(--base-color); } .complementary { background-color: var(--complementary-color); } .analogous-1 { background-color: var(--analogous-color-1); } .analogous-2 { background-color: var(--analogous-color-2); } .triadic-1 { background-color: var(--triadic-color-1); } .triadic-2 { background-color: var(--triadic-color-2); }

Tento příklad ukazuje, jak vygenerovat paletu barev na základě jediné základní barvy pomocí HSL. Tento kód můžete snadno přizpůsobit k vytváření různých barevných harmonií a přizpůsobit je svým specifickým designovým potřebám.

Příklad: Vytvoření efektu při najetí myší pomocí Lab

.button { background-color: #4caf50; /* Zelená barva */ color: #fff; border: none; padding: 10px 20px; cursor: pointer; transition: background-color 0.3s ease; } .button:hover { background-color: color(lab #4caf50 l calc(a * 1.1) calc(b * 1.1)); /* Mírně zesvětlit a zvýšit a a b */ }

Zde používáme Lab k mírnému zesvětlení a posunutí barvy směrem k červené a žluté při najetí myší, čímž vytváříme jemnou, ale znatelnou vizuální zpětnou vazbu pro uživatele.

Kompatibilita s prohlížeči a záložní řešení

Jako u každé nové funkce CSS je důležitým faktorem kompatibilita s prohlížeči. Relativní syntaxe barev je podporována ve většině moderních prohlížečů, včetně Chrome, Firefox, Safari a Edge. Starší prohlížeče ji však podporovat nemusí.

Abyste zajistili, že vaše webové stránky budou fungovat ve všech prohlížečích, je nezbytné poskytnout záložní řešení (fallbacks) pro prohlížeče, které relativní syntaxi barev nepodporují. Můžete to udělat pomocí CSS proměnných a pravidla @supports.

:root { --base-color: #29abe2; --highlight-color: #33b5e5; /* Záložní barva */ } @supports (color: color(hsl var(--base-color) h calc(s * 1.2) l)) { :root { --highlight-color: color(hsl var(--base-color) h calc(s * 1.2) l); /* Použít relativní syntaxi barev, pokud je podporována */ } } .highlight { background-color: var(--highlight-color); }

V tomto příkladu definujeme záložní barvu (#33b5e5) a poté pomocí pravidla @supports zkontrolujeme, zda prohlížeč podporuje relativní syntaxi barev. Pokud ano, aktualizujeme proměnnou --highlight-color barvou vygenerovanou pomocí relativní syntaxe barev. Tím je zajištěno, že uživatelé ve starších prohlížečích stále uvidí zvýrazněný prvek, i když nebude mít přesně stejnou barvu jako v novějších prohlížečích.

Aspekty přístupnosti

Ačkoli relativní syntaxe barev může být mocným nástrojem pro vytváření vizuálně přitažlivých designů, je klíčové zohlednit přístupnost. Ujistěte se, že barevné kombinace, které vytváříte, poskytují dostatečný kontrast pro uživatele se zrakovým postižením. Používejte nástroje jako WebAIM Contrast Checker k ověření, že vaše barevné kombinace splňují požadavky WCAG AA nebo AAA na kontrastní poměr.

Pamatujte, že vnímání barev se může u jednotlivců výrazně lišit. Zvažte testování svých designů s uživateli, kteří mají různé typy barvosleposti nebo zrakového postižení, abyste se ujistili, že mohou snadno vnímat váš web a interagovat s ním.

Závěr

Relativní syntaxe barev v CSS, zejména v kombinaci s barevnými prostory HSL a Lab, mění pravidla hry pro webové designéry. Umožňuje vám vytvářet dynamické motivy, jemné variace a přístupné designy s větší lehkostí a flexibilitou. Porozuměním principům HSL a Lab a poskytnutím záložních řešení pro starší prohlížeče můžete tuto výkonnou funkci využít k vytváření vizuálně ohromujících a inkluzivních zážitků pro uživatele po celém světě.

Využijte sílu relativní syntaxe barev a posuňte své dovednosti v oblasti webového designu na další úroveň. Experimentujte s různými barevnými prostory, matematickými operacemi a aspekty přístupnosti, abyste vytvořili webové stránky, které jsou krásné a zároveň inkluzivní pro všechny.

Další zdroje

Porozuměním a využíváním relativní syntaxe barev v CSS můžete vytvářet dynamičtější, přístupnější a vizuálně přitažlivější webové stránky, které uspokojí globální publikum. Pamatujte, že při navrhování s barvami je vždy třeba upřednostňovat přístupnost a uživatelský zážitek.

Demystifikace relativní syntaxe barev v CSS: Barevné prostory HSL a Lab pro globální webový design | MLOG