2025-09-25 | Podstawy programowania | 6 min czytania

Jak używać em i rem w CSS


programowanie php

Projektowanie nowoczesnych, dostępnych stron internetowych wymaga rezygnacji ze sztywnych wartości wyrażonych w pikselach. Aby witryna płynnie reagowała na ustawienia użytkownika i ekrany różnych urządzeń, kluczowe jest opanowanie relatywnych jednostek miary: em i rem.

Jednostki em i rem to względne jednostki miary w CSS, które pozwalają na elastyczne i responsywne projektowanie. Oto przewodnik, jak ich używać:

Kluczowe wnioski

  • rem (Root EM) odnosi się zawsze do bazowego rozmiaru czcionki elementu głównego dokumentu (najczęściej znacznika <html>).
  • em jest jednostką relatywną względem rozmiaru czcionki swojego bezpośredniego elementu nadrzędnego (rodzica).
  • Najlepszą praktyką jest stosowanie rem do globalnej typografii i układów, natomiast em do elementów, które powinny skalować się proporcjonalnie do tekstu (np. paddingi w przyciskach).
  • Korzystanie z jednostek relatywnych jest fundamentem dostępności (accessibility), ponieważ szanuje ustawienia wielkości tekstu wybrane przez użytkownika w przeglądarce.

Jak działa jednostka rem (Root EM)?

Jednostka rem jest niezwykle przewidywalna i bezpieczna w użyciu. Jej wartość jest obliczana na podstawie wielkości czcionki zdefiniowanej dla roota (czyli elementu <html>). Domyślnie większość współczesnych przeglądarek internetowych ustawia bazowy rozmiar tekstu na 16px.

Oznacza to, że w standardowej konfiguracji:

  • 1rem = 16px
  • 2rem = 32px
  • 0.5rem = 8px

Jeśli użytkownik zmieni domyślny rozmiar czcionki w ustawieniach swojej przeglądarki na np. 20px (z powodu wad wzroku), wszystkie elementy ostylowane za pomocą rem automatycznie i proporcjonalnie ulegną powiększeniu. Dzięki temu zachowujemy pełną kontrolę nad proporcjami layoutu, dbając jednocześnie o zasady dostępności cyfrowej.

Jak działa jednostka em i problem dziedziczenia

Jednostka em różni się od rem tym, że punktem odniesienia nie jest root dokumentu, lecz wielkość czcionki (font-size) rodzica danego elementu. Jeśli element nie ma zdefiniowanej wielkości czcionki u rodzica, szuka jej wyżej w drzewie DOM, aż dotrze do elementu głównego.

Głównym wyzwaniem przy pracy z em jest efekt kaskadowości i kumulacji (compounding efekt). Spójrzmy na poniższe porównanie zachowania obu jednostek w zagnieżdżonych strukturach kodu.

Poziom zagnieżdżenia listyWynik dla jednostki rem (baza: 16px, kod: 1.5rem)Wynik dla jednostki em (baza: 16px, kod: 1.5em)
Poziom 1 (Rodzic)1.5 \times 16px = 24px1.5 \times 16px = 24px
Poziom 2 (Dziecko)1.5 \times 16px = 24px1.5 \times 24px = 36px
Poziom 3 (Wnuk)1.5 \times 16px = 24px1.5 \times 36px = 54px
Porównanie zachowania zagnieżdżonych elementów rem i em

Jak widać w tabeli, użycie em na zagnieżdżonych listach powoduje, że każdy kolejny element staje się coraz większy, ponieważ mnoży wartość swojego bezpośredniego przedmówcy. Z tego powodu bezkrytyczne stosowanie em do wielkości fontów może prowadzić do trudnych w debugowaniu błędów wizualnych.

Kiedy stosować rem, a kiedy em? Praktyczne reguły

W nowoczesnym Web Developmencie wypracowano jasny podział ról dla obu tych jednostek, który pozwala unikać problemów z niekontrolowanym skalowaniem:

  1. Używaj rem do: wielkości czcionek akapitów, nagłówków (h1, h2), szerokości i wysokości głównych kontenerów na stronie, marginesów sekcji oraz ogólnego gridu witryny. Zapewni to spójność i stabilność całego szablonu.
  2. Używaj em do: właściwości takich jak padding, margin, border-radius czy width/height komponentów, które mają bezpośrednio zależeć od rozmiaru tekstu wewnątrz nich.

Klasycznym przykładem użycia em jest przycisk (button). Jeśli zdefiniujemy paddingi przycisku jako padding: 0.5em 1em;, a następnie w mediach społecznościowych lub w innej sekcji zmienimy tylko jego font-size, wewnętrzne odstępy przycisku przeskalują się automatycznie, zachowując idealne proporcje estetyczne bez konieczności nadpisywania paddingów.

Jednostka em - przykład

  • Definicja: em to jednostka względna, która jest obliczana na podstawie rozmiaru czcionki elementu rodzica.
  • Wzór: 1 em = rozmiar czcionki elementu rodzica.
  • Przykład

Jednostka rem - przykład

  • Definicja: rem to jednostka względna, która jest obliczana na podstawie rozmiaru czcionki elementu root (najczęściej <html>).
  • Wzór: 1 rem = rozmiar czcionki elementu root.
  • Przykład:

Różnice między em a rem

  • em:
    • Względne do elementu rodzica.
    • Może prowadzić do nieoczekiwanych wyników w drzewie DOM.
    • Często używane do rozmiarów czcionek i odstępów.
  • rem:
    • Względne do elementu root.
    • Bardziej przewidywalne i łatwiejsze do zarządzania.
    • Dobrze nadaje się do definiowania wartości bazowych (np. rozmiaru czcionki, odstępów).

Przykłady użycia

Przykład 1: Rozmiar czcionki

css

Przykład 2: Odstępy

css

Najlepsze praktyki

  • Używaj rem dla wartości bazowych: Definiuj rozmiary czcionek, odstępy i inne wartości bazowe w rem, aby zapewnić spójność i łatwość skalowania.
  • Używaj em dla zagnieżdżonych elementów: Używaj em dla elementów zagnieżdżonych, gdzie rozmiar powinien być względny do elementu rodzica (np. czcionki w nagłówkach).
  • Unikaj mieszania em i rem: Staraj się używać jednej jednostki względnej w danym kontekście, aby uniknąć nieoczekiwanych wyników.

Wsparcie przeglądarek

  • em i rem są wspierane we wszystkich nowoczesnych przeglądarkach.
  • Nie ma potrzeby dodawania prefiksów -webkit--moz- itp.

FAQ – Najczęściej zadawane pytania

Czy powinienem całkowicie zrezygnować z pikseli (px) w CSS?

Nie, piksele wciąż doskonale sprawdzają się przy definiowaniu bardzo cienkich obramowań (np. border: 1px solid #ccc) lub w miejscach, gdzie obiekt absolutnie nigdy nie powinien zmieniać swoich wymiarów.

O co chodzi z trikiem „html { font-size: 62.5%; }” ?

To technika ułatwiająca obliczenia. Skoro domyślne 100% = 16px, to 62.5% = 10px. Dzięki temu programista pisząc 1.4rem uzyskuje dokładnie 14px, a pisząc 2.5rem otrzymuje 25px, zachowując elastyczność jednostek relatywnych.

Czy rem i em mają wpływ na szybkość ładowania strony?

Nie, sposób interpretacji jednostek miary przez przeglądarkę odbywa się błyskawicznie na etapie renderowania stylów i nie wpływa mierzalnie na wydajność witryny.

Podsumowanie

Zrozumienie i sprawne operowanie jednostkami em i rem to klucz do tworzenia profesjonalnych, responsywnych oraz dostępnych interfejsów użytkownika. Łącząc przewidywalność globalnego rem z lokalną elastycznością i plastycznością em, deweloperzy mogą pisać znacznie krótszy, bardziej elegancki i łatwiejszy w utrzymaniu kod CSS, który dopasuje się do potrzeb każdego użytkownika.

Najczęściej czytane:

prowadzenie firmy

Dzielenie dysku na partycje to ważny element instalacji systemu operacyjnego. Możemy podzielić dysk na partycje w czasie lub po instalacji Windows 11.

prowadzenie firmy

Resetowanie hasła w systemie Windows może być konieczne, gdy zapomnimy swoje aktualne hasło lub chcemy zresetować hasło dla innego użytkownika.

modernizacja wordpress

Z przedstawionych we wisie 3 sposobów na usunięcie /category wg mnie najlepszym sposobem jest wykorzystanie wtyczki Yoast SEO. Polecamy tą wtyczkę do SEO.


Zapoznaj się z innymi wpisami:

programowanie php

Dowiedz się, czym jest front-end i dlaczego ma znaczenie dla wyglądu, interaktywności i funkcjonalności stron internetowych, a także dla komfortu użytkownika.

programowanie php

Dowiedz się, jak dodać hasło do strony za pomocą pliku .htaccess, jednocześnie wykluczając wybrany adres IP z wymogu logowania. Zrobisz to sam.

programowanie php

Partycjonowanie danych w MySQL – sprawdź, jak dzielić tabele, poprawić wydajność zapytań i zarządzać dużymi zbiorami danych.