--- title: Użycie zmiennych CSS slug: Web/CSS/Using_CSS_custom_properties translation_of: Web/CSS/Using_CSS_custom_properties ---
Zmienne CSS to zdefiniowane jednostki zawierające specyficzne wartości, reużywalne w całym dokumencie. Zmienne są ustawiane przy użyciu notacji właściwości niestandardowych (np. --kolor-glowny: black;) i mają dostęp do funkcji var() (np. kolor: var(--kolor-glowny);) .
Skomplikowane strony internetowe mają bardzo dużo powtarzającego się kodu CSS. Dla przykładu, taki sam kolor może być użyty setki razy w różnych miejscach, co w przypadku zmiany wymana globalnego wyszukiwania i zmian w wielu miejsach. Zmienne CSS pozwalają na przechowywanie wartości w jednym miejscu, zmiast wielu. Używają one również semantycznych identyfikatorów. Na przykład --glowny-kolor-tekstu jest łatwiejszy do zrozumienia niż #00ff00 szczególnie gdy taki sam kolor jest użyty w różnych kontekstach.
Zmienne CSS podlegają kaskadowości i dziedziczą wartości po rodzicach.
Deklarowanie zmiennych:
element {
--glowny-kolor-tla: brown;
}
Użycie zmiennych:
element {
background-color: var(--glowny-kolor-tla);
}
Notatka: Niestandardowy prefix var- istniał we wcześniejszych wersjach, jednak później został zmieniony na --. Firefox 31 i wyższy posiada nową specyfikację. ({{bug(985838)}})
Zacznijmy od prostego kodu CSS z różnymi klasami, których elementy posiadają różne kolory:
.jeden {
color: white;
background-color: brown;
margin: 10px;
width: 50px;
height: 50px;
display: inline-block;
}
.dwa {
color: white;
background-color: black;
margin: 10px;
width: 150px;
height: 70px;
display: inline-block;
}
.trzy {
color: white;
background-color: brown;
margin: 10px;
width: 75px;
}
.cztery {
color: white;
background-color: brown;
margin: 10px;
width: 100px;
}
.piec {
background-color: brown;
}
Implementujemy to w HTML'u:
<div>
<div class="jeden"></div>
<div class="dwa">Tekst <span class="cztery">- wiecej tekstu</span></div>
<input class="trzy">
<textarea class="piec">Lorem Ipsum</textarea>
</div>
co w efekcie daje nam:
{{EmbedLiveSample("sample1",600,180)}}
Zauważ powtarzalność kodu CSS. Kolor tła jest ustawiony na brązowy w kilku miejscach.W niektórych przypadkach możemy zadeklarować kolor do wszystkich elementów, co rozwiązuje problem. Jednak w przypadku złożonych projektów, nie zawsze jest to możliwe. Deklarując zmienną przy pomocy pseudo-klasy :root, możemy przechowywać zmienną i używać jej według potrzeb.
:root {
--glowny-kolor-tla: brown;
}
.jeden {
color: white;
background-color: var(--glowny-kolor-tla);
margin: 10px;
width: 50px;
height: 50px;
display: inline-block;
}
.dwa {
color: white;
background-color: black;
margin: 10px;
width: 150px;
height: 70px;
display: inline-block;
}
.trzy {
color: white;
background-color: var(--glowny-kolor-tla);
margin: 10px;
width: 75px;
}
.cztery {
color: white;
background-color: var(--glowny-kolor-tla);
margin: 10px;
width: 100px;
}
.piec {
background-color: var(--glowny-kolor-tla);
}
<div>
<div class="one"></div>
<div class="two">Text <span class="five">- more text</span></div>
<input class="three">
<textarea class="four">Lorem Ipsum</textarea>
</div>
Powyższy kod daje taki sam rezultat jak we wcześniejszym przykładzie.
Niestandardowe właściwości mogą być dziedziczone. Oznacza to, że jeśli dany element nie ma wartości, może użyć tej odziedziczonej od rodzica:
<div class="jeden">
<div class="dwa">
<div class="trzy">
</div>
<div class="cztery">
</div>
<div>
</div>
z następującym kodem CSS:
.dwa {
--test: 10px;
}
.trzy {
--test: 2em;
}
W tym przykładzie wynikiem dla var(--test) jest:
class="dwa" element: 10pxclass="trzy" element: 2emclass="cztery" element: 10px (odziedziczone od rodzica)class="jeden" element: nieprawidłowa wartość, która jest wartością domyślą każdej właściwości.{{CompatibilityTable}}
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Basic support | {{CompatVersionUnknown}}{{property_prefix("-webkit")}} 33.0 {{CompatNo}} 34.0[2] {{CompatChrome(49.0)}} |
{{CompatGeckoDesktop("29")}}[3] {{CompatGeckoDesktop("31")}} |
{{CompatNo}} | {{CompatOpera(36.0)}} | 9.1 |
| Feature | Android | Android Webview | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|
| Basic support | {{CompatNo}} | {{CompatChrome(49.0)}} | {{CompatGeckoDesktop("29")}} | {{CompatUnknown}} | {{CompatUnknown}} | 9.1 | {{CompatChrome(49.0)}} |
[1] Przeglądarka Chrome początkowo zaimplementowała zmienne CSS ze zmienioną składną, która wymagała niestandardowego prefixu przed nazwą zmiennej -webkit-var-. Można jej było następnie użyć przy pomocy funkcji -webkit-var(). Dodatkowo implementacja została ukryta pod flagą Eksperymentalne funkcje platformy internetowej pod chrome://flags.
[2] Chrome 34.0 usunął zmienne CSS ze względu na problemy z wydajnością.
[3] Zmienne CSS są zaimplementowane w preferencjach layout.css.variables.enabled, standardowo ustawione na false i używające stare składnia var-variablename w Gecko 29. Rozpoczynając od Gecko 31 implementacja jest włączona i używa nowej składni --variablename.