Rem, em – jednostki miary w css

Jednostki rem i em w CSS są niezwykle przydatne, jeśli chcesz tworzyć skalowalne, responsywne i dostępne interfejsy. Pomagają w zarządzaniu rozmiarem czcionek, marginesami, paddingiem i wieloma innymi właściwościami, bez konieczności używania sztywnych wartości pikselowych.

Czym są jednostki rem i em?

Obie jednostki są jednostkami względnymi, co oznacza, że ich wartości zależą od innych elementów na stronie.

  • em – odnosi się do rozmiaru czcionki swojego rodzica.
  • rem – odnosi się do rozmiaru czcionki elementu <html>.

Czyli:

  • 1em to 100% wielkości czcionki rodzica.
  • 1rem to 100% wielkości czcionki ustawionej w <html>.

Jak działa em?

Jednostka em jest zależna od elementu nadrzędnego. Spójrzmy na przykład:

html {
  font-size: 16px;
}

.parent {
  font-size: 20px;
}

.child {
  font-size: 1.5em; /* 1.5 × 20px = 30px */
}

1.5em oznacza 1.5 × rozmiar czcionki rodzica, czyli 1.5 × 20px = 30px.

Problemem em jest efekt zagnieżdżania. Jeśli ustawimy em w kilku poziomach, wartości mogą się nieoczekiwanie mnożyć:

.parent {
  font-size: 2em; /* 2 × 16px = 32px */
}

.child {
  font-size: 1.5em; /* 1.5 × 32px = 48px */
}

Dziecko (.child) ma teraz 48px, ponieważ dziedziczy 32px od .parent i skaluje go o 1.5×.

Kiedy używać em?

  • Do wewnętrznych odstępów (padding, margin)
  • Do ikon i przycisków, które powinny skalować się razem z tekstem
  • W komponentach UI, gdzie elementy powinny być zależne od siebie

Jak działa rem?

Jednostka rem odnosi się zawsze do rozmiaru czcionki w <html> i nie jest zależna od rodzica.

html {
  font-size: 16px;
}

.box {
  font-size: 2rem; /* 2 × 16px = 32px */
}

2rem to zawsze 32px, niezależnie od tego, gdzie .box się znajduje.

Kiedy używać rem?

  • Do głównego rozmiaru czcionki (font-size)
  • Do spójnego skalowania interfejsu w całym projekcie
  • Do globalnych wartości w layoucie (width, padding, margin)