Responsive Web Design — mobile-first i media queries w praktyce
Praktyczny przewodnik po responsywnym projektowaniu: mobile-first, media queries, breakpoints, fluid typography, obrazy i nowocześniejsze techniki jak container queries.
Responsive Web Design (RWD) to podejście, w którym strona automatycznie dostosowuje się do rozmiaru ekranu. W tym artykule nauczysz się jak to robić — od mobile-first, przez media queries, po responsywne obrazy.
width=device-width — szerokość strony = szerokość urządzenia
initial-scale=1.0 — brak domyślnego zoomu
Powyższy kod dodaj to do każdej klasycznej strony HTML, ponieważ bez tego przeglądarka mobilna wyrenderuje stronę w szerokim, wirtualnym viewportcie i pomniejszy całość.
Mobile-first vs Desktop-first
Desktop-first (stary sposób)
Piszesz style dla desktopu, potem "naprawiasz" dla mobile:
Zaczynasz od najtrudniejszego. Projektowanie na małym ekranie zmusza do myślenia o ograniczeniach, ponieważ musisz zdecydować, co jest absolutnie kluczowe dla użytkownika - nie masz miejsca na zbędne elementy.
Treść jest priorytetem. Zamiast upychać wszystko, co masz na desktopie, skupiasz się na najważniejszej treści i funkcjach, a to oznacza lepsze i bardziej przemyślane UX.
Stopniowo ulepszasz, a nie psujesz. Zamiast tworzyć skomplikowany layout desktopowy i potem próbować go "naprawić" dla telefonów (degradacja), budujesz prostą, solidną podstawę mobilną i stopniowo ją rozbudowujesz (progresywne ulepszanie).
Czystszy i lżejszy kod. Piszesz mniej stylów, które nadpisują inne, a to oznacza mniej konfliktów w CSS, łatwiejsze utrzymanie projektu i szybsze wczytywanie strony na urządzeniach mobilnych, które pobierają tylko niezbędny kod.
Media Queries
Składnia
Code
@media (warunek) { /* style */}/* Przykłady */@media (min-width: 768px) {} /* od 768px w górę */@media (max-width: 767px) {} /* do 767px */@media (min-width: 768px) and (max-width: 1023px) {} /* zakres */
Popularne breakpoints
Code
/* Mobile — domyślne, bez media query *//* Tablet */@media (min-width: 768px) {}/* Desktop */@media (min-width: 1024px) {}/* Duży desktop */@media (min-width: 1280px) {}
To tylko sensowny punkt startowy, ponieważ dobre breakpointy wynikają z treści i layoutu, nie z listy konkretnych urządzeń.
Nie wrzucaj loading="lazy" bezrefleksyjnie na obraz hero albo kluczowy obraz LCP, czyli Largest Contentful Paint, mierzy czas do wyrenderowania największego widocznego elementu — oznaczenie go preload przyspiesza jego załadowanie.. Tam zwykle chcesz ładowania od razu.
To bardzo skuteczne rozwiązanie dla komponentów używanych w różnych miejscach layoutu, ponieważ zamiast pytać o szerokość całego okna, pytasz o miejsce, w którym jest komponent.
Testowanie responsywności
Chrome DevTools
F12 → Toggle Device Toolbar (Ctrl+Shift+M na Windows/Linux, Cmd+Shift+M na macOS),
Maciej Sala — Product Manager i Frontend Developer z bogatym doświadczeniem w marketingu internetowym oraz SEO. Na co dzień pracuje z Reactem, Next.js i TypeScriptem, a ostatnio także z Astro i narzędziami do automatyzacji procesów AI. Sprawnie łączy perspektywę produktową z praktycznym podejściem do kodu. Przez kilka lat był związany z branżą gier wideo jako project manager i game designer. Absolwent historii na Uniwersytecie Jagiellońskim oraz studiów podyplomowych z marketingu internetowego na AGH w Krakowie. Po godzinach trenuje na siłowni, maluje figurki i rozwija własne projekty side-projecty.
Core Web Vitals to kluczowe metryki wydajności i doświadczenia użytkownika. Poznaj LCP, INP i CLS oraz zobacz, jak je mierzyć, monitorować i poprawiać w praktyce.
Kiedy użyć której dyrektywy hydracji w Astro? Szczegółowe porównanie client:load, client:idle, client:visible, client:media i client:only — z przykładami, benchmarkami i typowymi błędami.
Siedem trendów, które w 2026 realnie zmieniają web development i marketing: GEO, zero-click search, server-first Next.js, AI-assisted development i agentic commerce.