CSS Variables, znane także jako Custom Properties, to jedna z najbardziej przydatnych nowości w CSS, która pozwala na definiowanie wartości, które można wielokrotnie używać w całym arkuszu stylów. Dzięki zmiennym CSS możesz uprościć zarządzanie stylem, a także dynamicznie zmieniać wartości, co jest szczególnie przydatne w większych projektach.
Co to są zmienne w CSS?
Zmienna w CSS pozwala na zapisanie wartości, którą możesz używać wielokrotnie. Na przykład, jeśli masz kilka elementów o tym samym kolorze tła, możesz zdefiniować ten kolor raz jako zmienną i odwoływać się do niej w wielu miejscach.
Podstawowy przykład zmiennej CSS:
:root { --main-color: #3498db; --padding-size: 20px; } body { background-color: var(--main-color); padding: var(--padding-size); }
W tym przykładzie:
- Zmienna
--main-color
przechowuje wartość koloru#3498db
, którą można wielokrotnie używać w różnych miejscach w stylach. - Zmienna
--padding-size
przechowuje wartość odstępu, którą również można używać w różnych miejscach. - Funkcja
var()
służy do odwołania się do wartości zmiennej.
Jak definiować zmienne w CSS?
Zmienna CSS jest poprzedzona dwoma myślnikami --
i może być zdefiniowana na poziomie dowolnego selektora. Najczęściej zmienne są definiowane w selektorze :root
, co oznacza, że będą dostępne globalnie w całym dokumencie.
Przykład definiowania zmiennych globalnych:
:root { --primary-color: #f39c12; --secondary-color: #8e44ad; --font-size: 16px; --border-radius: 5px; }
Używanie zmiennych w różnych kontekstach
Zmiennych można używać do definiowania wielu różnych właściwości, takich jak kolory, czcionki, marginesy, odstępy, itp. Możesz je także nadpisywać w określonym zakresie, np. dla konkretnego elementu.
Przykład: Używanie zmiennych w stylach:
:root { --button-color: #e74c3c; --button-padding: 10px; } button { background-color: var(--button-color); padding: var(--button-padding); font-size: var(--font-size, 16px); /* Domyślna wartość 16px */ }
W tym przykładzie:
var(--button-color)
ustawia kolor tła przycisku.var(--button-padding)
ustawia odstęp wewnętrzny dla przycisku.- Możesz także ustawić domyślną wartość, jeśli zmienna nie jest zdefiniowana, używając drugiego argumentu, jak w przypadku
font-size
.
Zakres zmiennych
Zmienna CSS zdefiniowana w selektorze :root
jest dostępna globalnie. Możesz jednak zdefiniować zmienne lokalne dla konkretnych elementów, co pozwala na ich nadpisywanie w określonych miejscach.
Przykład: Nadpisywanie zmiennych lokalnie:
:root { --text-color: black; } p { color: var(--text-color); } .special-paragraph { --text-color: red; /* Nadpisanie zmiennej lokalnie */ color: var(--text-color); }
W tym przykładzie paragrafy domyślnie mają kolor czarny, ale paragraf o klasie .special-paragraph
będzie miał czerwony tekst, ponieważ zmienna została lokalnie nadpisana.
Dynamika i interaktywność z JavaScript
Jedną z największych zalet zmiennych CSS jest możliwość ich dynamicznej zmiany za pomocą JavaScriptu, co otwiera drogę do tworzenia bardziej interaktywnych stron internetowych.
Przykład: Zmiana wartości zmiennej za pomocą JavaScript:
<!DOCTYPE html> <html lang="pl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Dynamiczne zmienne CSS</title> <style> :root { --background-color: #3498db; } body { background-color: var(--background-color); transition: background-color 0.3s; } </style> </head> <body> <button onclick="changeColor('#e74c3c')">Zmień kolor tła</button> <script> function changeColor(newColor) { document.documentElement.style.setProperty('--background-color', newColor); } </script> </body> </html>
W tym przykładzie zmieniamy wartość zmiennej --background-color
za pomocą JavaScript, co dynamicznie zmienia kolor tła strony.
Praktyczne zastosowanie zmiennych CSS
Zmiennych CSS możesz używać do wielu celów, takich jak:
- Definiowanie kolorów dla różnych trybów (np. jasny i ciemny tryb).
- Uproszczenie zarządzania stylem w dużych projektach.
- Zarządzanie jednostkami, takimi jak marginesy, odstępy, rozmiary czcionek itp.
Przykład: Zmienne do definiowania trybu ciemnego i jasnego:
:root { --bg-color: white; --text-color: black; } body { background-color: var(--bg-color); color: var(--text-color); } .dark-mode { --bg-color: black; --text-color: white; }
W tym przykładzie, po dodaniu klasy .dark-mode
do elementu body
, zmienne zostaną nadpisane, a strona zmieni swój wygląd na tryb ciemny.
Ćwiczenie: Tworzenie motywu kolorystycznego strony za pomocą zmiennych CSS
Zadanie: Stwórz stronę, która pozwala użytkownikowi zmieniać kolor motywu (tła i tekstu) za pomocą przycisków, korzystając ze zmiennych CSS i JavaScript.
<!DOCTYPE html> <html lang="pl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Zmienny motyw</title> <style> :root { --bg-color: white; --text-color: black; } body { background-color: var(--bg-color); color: var(--text-color); font-family: Arial, sans-serif; padding: 20px; transition: background-color 0.3s, color 0.3s; } button { margin: 5px; padding: 10px; cursor: pointer; } </style> </head> <body> <h1>Zmienny motyw strony</h1> <button onclick="changeTheme('white', 'black')">Jasny motyw</button> <button onclick="changeTheme('black', 'white')">Ciemny motyw</button> <button onclick="changeTheme('#3498db', '#ffffff')">Niebieski motyw</button> <script> function changeTheme(bgColor, textColor) { document.documentElement.style.setProperty('--bg-color', bgColor); document.documentElement.style.setProperty('--text-color', textColor); } </script> </body> </html>
Gratulacje! Ukończyłeś ostatnią lekcję 13.
Mamy dla Ciebie małą ściągę czyli spis wszystkich tagów i właściwości CSS:
– Spis tagów HTML
– Spis Właściwości CSS
Jeśli znajdziesz chwilę to podziel się swoja opinią o kursie w komentarzu w tym wpisie.
Spis Treści - darmowy kurs HTML i CSS
Podstawy:
Wprowadzenie: Jak przygotować środowisko pracy
Lekcja 1: Podstawowe tagi HTML i struktura dokumentu
Lekcja 2: Formatowanie tekstu, linki i obrazki
Lekcja 3: Listy, tabele i formularze w HTML
Lekcja 4: Wprowadzenie do CSS
Lekcja 5: Rozszerzenie podstawowych właściwości CSS
Zaawansowane:
Lekcja 6: Semantyczne HTML5
Lekcja 7: Zaawansowane formularze w HTML5
Lekcja 8: Multimedia w HTML5
Lekcja 9: Flexbox – Elastyczny układ stron
Lekcja 10: CSS Grid Layout – Potężny system układów
Lekcja 11: CSS Animacje i przejścia (transitions)
Lekcja 12: Responsywność i Media Queries
Lekcja 13: CSS Variables (Custom Properties)
Dodatki:
- Spis tagów HTML
- Spis Właściwości CSS