Korzystanie z zmiennych w zaawansowanych projektach
Korzystanie z zmiennych w zaawansowanych projektach
W tej lekcji pokażę Ci, jak korzystać ze zmiennych CSS w większych, bardziej złożonych projektach. Chodzi tu nie tylko o wygodę kodowania, ale o budowanie spójnego i łatwego w utrzymaniu systemu stylów – takiego, który będzie działał na całej stronie lub w aplikacji.
Dzięki zmiennym możesz tworzyć tzw. „design system” – czyli zestaw wartości opisujących kolory, typografię, rozmiary, odstępy i inne właściwości wizualne. To podejście jest standardem w profesjonalnym front-endzie.
1. Organizacja zmiennych – projektuj jak zespół
Warto grupować zmienne według kategorii – np. kolory, typografia, przestrzenie, komponenty. Dzięki temu nawet w większym pliku CSS wszystko będzie zrozumiałe i łatwe do znalezienia.
:root {
/* Kolory */
--color-primary: #1565c0;
--color-secondary: #ff8f00;
--color-bg: #fafafa;
--color-text: #212121;
/* Typografia */
--font-base: 16px;
--font-heading: 24px;
/* Rozmiary i odstępy */
--spacing-sm: 8px;
--spacing-md: 16px;
--spacing-lg: 32px;
/* Komponenty */
--border-radius: 6px;
--shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
Dlaczego tak? Jeśli za miesiąc wrócisz do projektu albo będzie go rozwijać ktoś inny – wszystko będzie jasne i uporządkowane. To jak tworzenie dokumentacji wewnątrz CSS.
2. Budowanie komponentów opartych na zmiennych
Załóżmy, że tworzysz kartę produktu. Jeśli zamiast konkretnych wartości użyjesz zmiennych, możesz łatwo zmieniać jej wygląd globalnie. Przykład:
.card {
background: var(--color-bg);
padding: var(--spacing-md);
border-radius: var(--border-radius);
box-shadow: var(--shadow);
}
.card h3 {
font-size: var(--font-heading);
color: var(--color-primary);
}
Efekt działania: karta korzysta z tych samych zmiennych co inne komponenty – dzięki temu wszystko wygląda spójnie.
3. Różne motywy – nadpisywanie zmiennych lokalnie
Jeśli chcesz, by np. nagłówek miał inną kolorystykę niż reszta strony – możesz nadpisać zmienne lokalnie, w obrębie konkretnego elementu. To bardzo elastyczne podejście.
.header {
--color-bg: #263238;
--color-text: #ffffff;
background: var(--color-bg);
color: var(--color-text);
}
Efekt działania: zmienne zdefiniowane wewnątrz .header obowiązują tylko w tym elemencie. Poza nim używane będą te z :root.
4. Responsywność – zmienne w media queries
Zmiennymi możesz również sterować w zależności od rozmiaru ekranu – np. zmienić bazowy rozmiar czcionki:
:root {
--font-base: 16px;
}
@media (min-width: 768px) {
:root {
--font-base: 18px;
}
}
Efekt działania: tekst automatycznie zwiększy się na większych ekranach. Zamiast modyfikować każdy selektor osobno – zmieniasz tylko jedną wartość.
5. Zmienna sterowana JavaScriptem
To bardziej zaawansowane, ale warto wiedzieć: możesz zmieniać zmienne CSS dynamicznie z poziomu JavaScriptu, np. po kliknięciu przycisku „Zmień motyw”.
document.documentElement.style.setProperty('--color-primary', '#ff4081');
To otwiera drogę do ciemnych motywów, motywów użytkownika, ustawień dostępności itd. W wielu aplikacjach to standard.
Ćwiczenie – karta produktu ze zmiennymi
Stwórz komponent .product-card, który wykorzystuje zmienne do:
- tła i tekstu,
- nagłówka z innym kolorem,
- zaokrąglenia i cienia,
- wewnętrznych odstępów.
👉 Otwórz JSFiddle i przetestuj
<style>
:root {
--color-bg: #ffffff;
--color-text: #333333;
--color-accent: #009688;
--font-heading: 20px;
--spacing-md: 20px;
--border-radius: 8px;
--shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
}
.product-card {
background: var(--color-bg);
color: var(--color-text);
padding: var(--spacing-md);
border-radius: var(--border-radius);
box-shadow: var(--shadow);
}
.product-card h3 {
font-size: var(--font-heading);
color: var(--color-accent);
}
</style>
<div class="product-card">
<h3>Nowoczesna lampa LED</h3>
<p>Stylowa i energooszczędna lampa do salonu.</p>
</div>
Podsumowanie
- Zmienne CSS są kluczowe przy budowaniu spójnych i elastycznych stylów.
- Możesz organizować je tematycznie, używać w komponentach, motywach i media queries.
- To podejście, które spotkasz w każdym nowoczesnym projekcie – nawet z frameworkami typu Tailwind czy Bootstrap 5.
W kolejnych modułach będziemy używać zmiennych jako stałego elementu projektowania CSS. To jeden z filarów profesjonalnego front-endu!
