CSS Custom Properties (Proměnné)
CSS proměnné (oficiálně Custom Properties) umožňují ukládat hodnoty na jednom místě a opakovaně je používat napříč celým stylem.
1. Selektor :root
Pro definování globálních proměnných se nejčastěji používá pseudo-třída :root. Ta odpovídá elementu <html>, ale má vyšší specificitu. Proměnné definované zde jsou dostupné v celém dokumentu.
CSS
:root {
--primary-color: #3498db;
--secondary-color: #2ecc71;
--padding-main: 20px;
--font-standard: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
2. Deklarace a použití var()
Proměnné vždy začínají dvěma pomlčkami --. K jejich vyvolání slouží funkce var().
CSS
.button {
background-color: var(--primary-color);
padding: var(--padding-main);
font-family: var(--font-standard);
border: none;
color: white;
}
3. Fallback hodnoty (Záchranná brzda)
Co když proměnná není definovaná? Funkce var() přijímá druhý parametr jako záložní hodnotu. Pokud --accent-color neexistuje, použije se orange.
CSS
.alert {
/* var(název-proměnné, fallback-hodnota) */
background-color: var(--accent-color, orange);
}
4. Dědičnost (Inheritance)
CSS proměnné se dědí stejně jako ostatní vlastnosti (např. color). Můžeš je ale “přebít” v konkrétním elementu, což změní hodnotu i pro všechny jeho potomky.
CSS
:root {
--text-color: black;
}
.dark-section {
/* Přepsání proměnné pouze pro tento blok a jeho děti */
--text-color: white;
background-color: #333;
}
p {
color: var(--text-color);
}
Příklad v HTML:
HTML
<p>Já budu černý.</p>
<div class="dark-section">
<p>Já budu bílý, protože jsem uvnitř dark-section.</p>
</div>
5. Výhody v kostce
-
DRY (Don’t Repeat Yourself): Hodnotu změníš na jednom místě.
-
Sémantika: Místo
#ff5733v kódu vidíš--brand-danger. -
Dynamika: Na rozdíl od proměnných v SASS/LESS můžete CSS proměnné měnit za běhu pomocí JavaScriptu.
tags:
- ffffff
- 000000
- 1a1a1a
- f0f0f0
Praktická ukázka: Přepínač témat
CSS
:root {
--bg: ;
--text: ;
}
[data-theme="dark"] {
--bg: ;
--text: ;
}
body {
background-color: var(--bg);
color: var(--text);
transition: background 0.3s ease;
}
Vypadá to, že stavíš solidní základy pro čistý kód. Chceš, abych ti ukázal, jak tyhle proměnné elegantně přepínat pomocí JavaScriptu (např. pro Dark Mode)?