Codewawa
Wszystkie kursy
CSS3 / Zmienne CSS

Zmienne CSS

# Zmienne CSS

Po co?

W wielu językach programowania mamy zmienne. Są one bardzo pomocne i ułatwiają życie programiście. Dużo łatwiej jest zmienić wartość zmiennej w jednym miejscu niż zmieniać tą wartość w całym kodzie setki razy. Oprócz tego dzięki dowolnym nazw zmiennych, można dużo łatwiej zorientować się w kodzie.

Jak to działa?

Zmienne CSS mogą być globalne albo lokalne. Do tworzenia zmiennych globalnych służy nam pseudoklasa :root.

:root {
    --nazwa-klasy: wartość;
}

Należy pamiętać że nazwa klasy musi się zaczynać od dwóch myślników --. Oczywiście sama nazwa jest dowolna. W miejsce wartości wpisujemy wartość jaką chcemy zastosować. Przykładowo jeżeli nasza strona ma główny kolor np. niebieski, to zamiast wpisywać wszędzie blue, a potem zmieniać to wiele razy jak zmienimy zdanie, stwórzmy zmienną która będzie ten kolor przechowywać.

:root {
    --glowny-kolor: blue;
}

Jeżeli chodzi o zmienne lokalne zasada jest dokładnie taka sama tylko zamiast pseudoklasy :root używamy danego elementu i wtedy zmienna działa tylko w zakresie tego elementu i jego dzieci.

div {
    --nazwa-zmiennej-lokalnej: wartość;
}

Jak skorzystać ze zmiennej?

Aby skorzystać ze zmiennej wystarczy użyć funkcji var(). Przykładowo użycie naszej zmiennej --glowny-kolor.

body {
    background: var(--glowny-kolor);
}

Jest to równoznaczne z zapisem:

body {
    background: blue;
}

Co jeszcze warto wiedzieć o zmiennych?

Jeżeli utworzymy zmienną globalną i zmienną lokalną o tej samej nazwie, ale różnych wartościach to wartość przypisana do zmiennej lokalnej będzie użyta przez element do którego została przypisana i przez jego dzieci. Natomiast wartość przypisana do zmiennej globalnej będzie użyta wszędzie indziej. Czyli w przypadku takiego dokumentu HTML:

<body>
    <div id="jeden">
        <div class="pudelko"></div>
        <div class="pudelko"></div>
        <div class="pudelko"></div>
    </div>
    <div id="dwa">
        <div class="pudelko"></div>
        <div class="pudelko"></div>
        <div class="pudelko"></div>
    </div>
</body>

i CSS:

:root {
    --glowny-color: blue;
}

#dwa {
    --glowny-color: red;
}

.pudelko {
    width: 10px;
    height: 10px;
    background: var(--glowny-color);
}

To trzy pudelka w divie jeden będą miały kolor niebieski (wartość zmiennej globalnej), a trzy pudełka w divie dwa będą miały kolor czerwony (wartość zmiennej lokalnej).

Kolejną sprawą wartą uwagi jest to że w funkcji var() możemy dodać drugą wartość, która zostanie użyta jeżeli podana zmienna nie istnieje. Na przykład:

/* 
:root {
    --glowny-color: blue; 
}
*/

body {
    background: var(--glowny-color, red);
}

W tym przypadku tło będzie czerwone, ponieważ zmienna --glowny-color nie została zadeklarowana.