Stylowanie w Next.js - Przewodnik dla początkujących
19/12/2023
9 min
Bartosz Lewandowski
Stylowanie w Next.js - Przewodnik dla początkujących
19/12/2023
9 min
Bartosz Lewandowski
Spis Treści
Sprawdź poprzedni wpis: Optymalizacje w Next.js - Jak przyspieszyć swoją stronę?
Jeśli interesuje Cię, jak nadać Twojej stronie w Next.js unikalny i przyciągający wzrok wygląd, to świetnie trafiłeś! W tym wpisie przedstawię Ci nie tylko praktyczne podejścia do stylowania, ale też pokażę, jak wykorzystać pełen potencjał SCSS, Tailwind CSS i StyleX. Przygotuj się na porcję solidnych wskazówek, które sprawią, że Twoje projekty będą nie tylko piękne, ale i funkcjonalne. Dowiesz się, jak te narzędzia mogą całkowicie zmienić Twoje podejście do stylizacji i pomóc Ci osiągnąć efekt "wow"! Zapraszam do lektury pełnej inspiracji i kreatywnych rozwiązań.
Scss
Wykorzystanie scss w aplikacjach Next.js to nie tylko kwestia estetyki, ale także efektywności i organizacji kodu. Preprocesor Scss, ze swoimi zaawansowanymi funkcjonalnościami takimi jak zmienne, mieszanki czy zagnieżdżanie, pozwala na tworzenie bardziej zorganizowanego i łatwego do utrzymania kodu CSS. Scss otwiera nowe możliwości w projektowaniu responsywnych i dynamicznych interfejsów użytkownika.
Instalacja Scss
Aby rozpocząć pracę z SCSS w Next.js, musimy najpierw zainstalować odpowiednie zależności. W tym celu użyjemy pnpm do zainstalowania sass. Po zainstalowaniu możemy bezpośrednio zacząć używać plików .scss lub .sass w naszym projekcie.
Organizacja plików
Organizacja plików stylów w projekcie Next.js jest kluczowa dla utrzymania porządku i efektywności pracy. W tym kontekście, warto stosować pewne praktyki, które pomagają w zarządzaniu stylami, szczególnie w większych projektach.
Folder styles w src:
variables.scss: Ten plik służy jako centralne miejsce na zmienne globalne, takie jak kolory, typografia, breakpointy itd. Przechowywanie tych wartości w jednym miejscu ułatwia zarządzanie nimi i zapewnia spójność w całym projekcie
global.scss: W tym pliku można umieścić globalne style, które będą stosowane w całej aplikacji, na przykład resetowanie stylów czy globalne reguły.
Przechowywanie stylów związanych z komponentami:
Rozdzielenie stylów komponentu na dwa pliki, base.module.scss i rwd.module.scss, w projektach Next.js, jest praktyką, która pomaga w utrzymaniu czystości i modularności kodu. Pozwala na lepsze zarządzanie stylami, szczególnie w kontekście responsywności. Oto szczegółowe wyjaśnienie tego podejścia:
- base.module.scss
Podstawowy styl komponentu: Ten plik zawiera główne style dla danego komponentu. Obejmuje to układ (layout), typografię, kolory, marginesy, paddingi i inne podstawowe cechy wizualne.Jeśli tworzysz komponent Button, base.module.scss będzie zawierać styl dla wyglądu przycisku, takie jak jego rozmiar, kolor tła, kolor tekstu, border itp.
Organizacja i czystość kodu: Dzięki umieszczeniu podstawowych stylów w osobnym pliku, kod staje się bardziej czytelny i łatwiejszy w utrzymaniu. Zmiany dotyczące wyglądu podstawowego komponentu są ograniczone tylko do tego pliku.
Importowanie zmiennych: W base.module.scss można importować zmienne z _variables.scss, co pozwala na wykorzystanie globalnych wartości, takich jak kolory, rozmiary fontów itd.
- rwd.module.scss
Stylowanie responsywne: Plik rwd.module.scss w kontekście projektów Next.js służy do aktualizacji i dostosowywania stylów komponentów w zależności od rozmiaru ekranu urządzenia. Jest to kluczowe dla tworzenia responsywnych aplikacji, które wyglądają dobrze i są funkcjonalne na różnych typach urządzeń.Dostosowujemy tutaj układu, rozmiaru, ukrywanie lub wyświetlanie elementów itd., na różnych urządzeniach (telefony, tablety, laptopy, duże ekrany).
Modułowość i separacja: Dzięki temu podejściu, łatwiej jest zarządzać i utrzymywać style, ponieważ zmiany responsywne są izolowane od podstawowych stylów komponentu.
Importowanie zmiennych: W tym pliku wykorzystuje się zapytania media, często korzystając z breakpointów zdefiniowanych w _variables.scss, aby dostosować styl komponentu do różnych rozmiarów ekranów.
Przykład: Załóżmy, że masz komponent Button, który w base.module.scss ma określony domyślny rozmiar. W rwd.module.scss możesz zdefiniować, że na ekranach komputerów stacjonarnych przycisk powinien być większy.
Przykład użycia w komponencie
Schemat pisania Scss
Schemat, który został przedstawiony na załączonym obrazku, przedstawia strukturę organizacji CSS. Układ ten może być szczególnie przydatny w preprocesorach takich jak SCSS, ponieważ pozwala na lepszą organizację i łatwiejsze zarządzanie stylami.Stosowanie takiego schematu ma kilka znaczących zalet:
- Łatwość utrzymania:
- Ułatwia wprowadzanie i przeglądanie zmian w stylach, ponieważ podobne właściwości są zebrane w jednym miejscu.
- Czytelność:
- Kod staje się bardziej czytelny dla deweloperów, którzy mogą szybko zorientować się w strukturze stylów bez konieczności przeszukiwania całego pliku.
- Spójność:
- Ułatwia zachowanie spójności w stylach przez całą aplikację, ponieważ deweloperzy mogą łatwiej stosować i ponownie używać podobnych wzorców.
Tailwind CSS
Integracja Tailwind CSS z Next.js stanowi potężne połączenie, umożliwiające tworzenie responsywnych i estetycznie zaawansowanych aplikacji internetowych. Tailwind CSS, będący ramą CSS o podejściu utility-first, zapewnia elastyczność i szybkość w projektowaniu interfejsów użytkownika. Z kolei Next.js, jako framework bazujący na React, oferuje efektywny routing i serwerowe renderowanie komponentów. Połączenie tych dwóch technologii pozwala na tworzenie wydajnych, szybkich i pięknych aplikacji internetowych.
Instalacja
W katalogu projektu wykonaj następujące polecenia:
To zainstaluje Tailwind CSS wraz z potrzebnymi zależnościami.
Konfiguracja
W pliku tailwind.config.js, skonfiguruj ścieżki do wszystkich plików HTML, JS, JSX, TS, i TSX, gdzie będziesz używać Tailwind:
W pliku głównym CSS (zazwyczaj globals.css) zaimportuj stylowanie Tailwind:
Pisanie stylów z Tailwind CSS
Tailwind CSS to framework CSS oparty na klasach utility, co oznacza, że stylizacja elementów odbywa się poprzez dodawanie klas bezpośrednio w kodzie HTML, JSX lub TSX. Oto jak to robić:
- Zrozumienie klas utility: Tailwind używa klas utility do wszystkiego, od marginesów i paddingów, po kolory i fonty. Na przykład, klasa text-center służy do centrowania tekstu, a bg-blue-500 nadaje elementowi niebieskie tło.
- Stosowanie klas w komponentach: Aby zastosować styl, wystarczy dodać odpowiednie klasy do elementów. Na przykład:
- Responsywność: Tailwind zawiera responsywne warianty większości klas, które można aktywować za pomocą prefiksów takich jak md:, lg:, itp. Na przykład, md:bg-red-500 zmieni tło na czerwone tylko na średnich i większych ekranach.
- Dostosowywanie: Można dostosować konfigurację Tailwind, aby dodać własne kolory, rozmiary, itp. Może to zrobić przez edycję pliku tailwind.config.js.
StyleX
StyleX to innowacyjny system stylizacji, który łączy wygodę korzystania z bibliotek CSS-in-JS z wydajnością i skalowalnością statycznego CSS. Został starannie zaprojektowany, aby sprostać wymaganiom dużych aplikacji, reużywalnych bibliotek komponentów oraz kodu opartego na statycznym typowaniu.
Podstawowe cechy StyleX:
- Ekspresywność i determinizm: StyleX wspiera bogaty podzbiór CSS, unikając skomplikowanych selektorów i zapewniając brak konfliktów specyficzności w generowanym CSS.
- Optymalizacja i organizacja: Transformuje i optymalizuje style do "atomowych" nazw klas CSS, co eliminuje potrzebę zarządzania oddzielnymi klasami pomocniczymi.
- Łączenie stylów: Umożliwia scalanie stylów przez granice plików i komponentów, idealne dla bibliotek komponentów umożliwiających personalizację.
- Bezpieczeństwo typów: StyleX jest w pełni typowany, oferując narzędzia do precyzyjnego kontrolowania akceptowalnych właściwości i wartości w komponentach.
- Zalety StyleX:
- Szybkość: StyleX zapewnia wysoką wydajność zarówno podczas kompilacji, jak i w czasie działania aplikacji.
- Skalowalność: Doskonale sprawdza się w dużych kodach źródłowych, minimalizując rozmiar wiązek CSS.
- Przewidywalność: Automatycznie zarządza specyficznością selektorów CSS, zapewniając niezawodność stosowania stylów.
Jak działa StyleX?
StyleX to zestaw narzędzi obejmujących plugin do Babel, niewielką bibliotekę runtime, plugin ESLint oraz integracje z bundlerami i frameworkami. Kluczowym elementem jest plugin Babel, który znajduje, ekstrahuje i przekształca style w atomowe nazwy klas w czasie kompilacji.
Instalacja
Do naszej aplikacji NextJS potrzebujemy dodać kilka zależności, aby uruchomić StyleX:
- @stylexjs/open-props: Zapakowane CSS (np. kolory, czcionki) używane z StyleX, ułatwiające tworzenie spójnego designu.
- @stylexjs/babel-plugin: Plugin do Babel umożliwiający integrację StyleX z konfiguracją Babel w projekcie.
- @stylexjs/nextjs-plugin: Wtyczka do Next.js wspierająca StyleX, umożliwiająca łatwą integrację z niestandardową konfiguracją Babel w Next.js.
Konfiguracja
Utwórz nowy plik .babelrc.js w katalogu głównym aplikacji NextJS z poniższą konfiguracją:
Skonfiguruj plik next.config.js do używania StyleX poprzez plugin @stylexjs/nextjs-plugin:
Tworzenie stylów
Po instalacji StyleX, możesz zacząć tworzyć style dla swoich komponentów. StyleX wykorzystuje podejście podobne do CSS-in-JS, co pozwala na definiowanie styli bezpośrednio w komponentach.
Przykładowe style:
Dynamiczne stylowanieStyleX umożliwia także dynamiczne zmiany stylów na podstawie właściwości komponentu lub stanu. Możesz zdefiniować funkcję, która zwraca odpowiedni zestaw stylów.
Podsumowanie
Podsumowując, wiesz już, że Next.js oferuje trzy główne sposoby stylowania: SCSS, Tailwind CSS i StyleX. SCSS daje Ci kontrolę i zaawansowane możliwości w zarządzaniu CSS. Tailwind CSS natomiast przynosi szybkość i prostotę dzięki klasom utility, świetnie nadając się do szybkich i efektywnych projektów. StyleX to hybrydowy sposób, który łączy zalety CSS-in-JS z wydajnością statycznego CSS, idealny dla skomplikowanych aplikacji. Te metody stylowania to klucz do tworzenia wyjątkowych i funkcjonalnych interfejsów w Twoich projektach Next.js.
To już ostatni wpis z serii wprowadzającej do Next.JS. Jeśli trafiłeś tutaj przypadkowo chciałbym gorąco zachęcić cię do przejścia przez tą ścieżkę od samego początku zaczynając od Wprowadzenie do Next.js 13 i jego nowości. Mam nadzieję, że moje poradniki pokazały ci jak świetnym frameworkiem jest Next.js i dlaczego to właśnie on zrewolucjonizuje rynek e-commerce.
Często zadawane pytania
- Jakie są zalety używania SCSS w Next.js? SCSS zapewnia zaawansowane funkcje, takie jak zmienne, mieszanki, zagnieżdżanie, co ułatwia tworzenie zorganizowanego i łatwego do utrzymania kodu CSS. Pozwala to na efektywniejsze projektowanie responsywnych interfejsów użytkownika.
- Czy do pracy z SCSS w Next.js potrzebuję dodatkowych zależności? Tak, aby używać SCSS w Next.js, musisz zainstalować sass za pomocą polecenia pnpm add -D sass.
- Jak mogę zorganizować pliki SCSS w projekcie Next.js? Zaleca się utworzenie folderu styles w /src, z plikami takimi jak _variables.scss dla zmiennych globalnych i global.scss dla globalnych stylów. Warto aby każdy komponent miał pliki base.module.scss i rwd.module.scss pomaga w utrzymaniu czystości i modularności kodu.
- Czym różni się StyleX od innych systemów stylizacji? StyleX łączy wygodę korzystania z CSS-in-JS z wydajnością statycznego CSS. Jest idealny dla dużych aplikacji i bibliotek komponentów, oferując ekspresywność, optymalizację, skalowalność oraz bezpieczeństwo typów.
- Co to jest Tailwind CSS i jak można go zintegrować z Next.js? Tailwind CSS to framework CSS o podejściu utility-first, który umożliwia szybkie projektowanie interfejsów użytkownika. Można go zintegrować z Next.js poprzez instalację pnpm add -D tailwindcss postcss autoprefixer i konfigurację pliku tailwind.config.js.
- Jak mogę zainstalować i skonfigurować StyleX w projekcie Next.js? Aby uruchomić StyleX musimy dodać kilka zależnośći pnpm add @stylexjs/stylex @stylexjs/open-props @stylexjs/babel-plugin @stylexjs/nextjs-plugin. Konfiguracja obejmuje modyfikacje plików .babelrc.js i next.config.js w katalogu głównym aplikacji.
- Czy StyleX umożliwia dynamiczne stylowanie? Tak, StyleX umożliwia dynamiczne zmiany stylów na podstawie właściwości komponentu lub stanu, co daje dużą elastyczność w projektowaniu interfejsu użytkownika.
- Jakie są główne korzyści z używania Tailwind CSS w Next.js? Tailwind CSS oferuje szybkość i elastyczność w projektowaniu interfejsów użytkownika dzięki klasom utility. Umożliwia łatwe tworzenie responsywnych aplikacji i jest dobrze zintegrowany z Next.js.
- Czy StyleX jest odpowiedni dla każdego projektu? StyleX jest szczególnie przydatny w dużych aplikacjach i projektach z wielokrotnie używanymi komponentami. Może być jednak nadmiernie skomplikowany dla mniejszych projektów, gdzie prostsze rozwiązania mogą być bardziej odpowiednie.
Bartosz Lewandowski
CEO
Newsletter
Czytaj Także...
- Wprowadzenie do Next.js 13 i jego nowości
10 min
12/12/2023
- Jak skonfigurować projekt z Next.js 13 - Przewodnik dla początkujących
11
13/12/2023