Kurs HTML

4.1. Jednostki długości absolutne (px, pt, cm, mm, in, pc)

Strona główna > Kurs CSS > Rozdział 4: Jednostki i Kolory w CSS > Jednostki długości absolutne (px, pt, cm, mm, in, pc)

Wprowadzenie: Stałe wymiary

W CSS, aby określić rozmiary elementów, marginesy, paddingi, rozmiary czcionek i inne wymiary, używamy **jednostek długości**. Dzielą się one na dwie główne kategorie: absolutne i relatywne.

**Jednostki długości absolutne** definiują rozmiar, który jest stały i niezależny od innych elementów na stronie czy rozmiaru okna przeglądarki. Są one powiązane z fizycznymi jednostkami miary lub, w przypadku pikseli, z rozdzielczością urządzenia wyświetlającego.

Chociaż wydają się precyzyjne, ich użycie w projektowaniu stron internetowych jest często ograniczone ze względu na różnorodność urządzeń i potrzebę responsywności.

Rodzaje jednostek absolutnych

Najczęściej spotykane jednostki absolutne to:

  • px (piksel): Najpopularniejsza jednostka absolutna w web designie. Teoretycznie odpowiada jednemu pikselowi na ekranie urządzenia. Jednak w praktyce, na ekranach o wysokiej gęstości (HiDPI, Retina), jeden piksel CSS może odpowiadać wielu fizycznym pikselom urządzenia, aby zachować spójny rozmiar wizualny. Uważany za jednostkę względną do urządzenia wyświetlającego, ale absolutną w kontekście layoutu strony.
  • pt (punkt): Jednostka tradycyjnie używana w druku. 1 punkt = 1/72 cala. Rzadziej stosowana w projektowaniu na ekrany.
  • cm (centymetr): Jednostka fizyczna.
  • mm (milimetr): Jednostka fizyczna.
  • in (cal): Jednostka fizyczna. 1 cal = 2.54 cm = 96px (w standardzie CSS).
  • pc (pica): Jednostka używana w druku. 1 pica = 12 punktów.
.element {
  width: 300px; /* Szerokość 300 pikseli CSS */
  font-size: 12pt; /* Rozmiar czcionki 12 punktów */
  margin-bottom: 1cm; /* Dolny margines 1 centymetr */
  border-width: 1mm; /* Szerokość obramowania 1 milimetr */
  padding: 0.5in; /* Wewnętrzny odstęp pół cala */
}

Relacje między jednostkami (w standardzie CSS):

  • 1 in = 96 px
  • 1 in = 72 pt
  • 1 in = 6 pc
  • 1 in = 2.54 cm
  • 1 cm = 10 mm
  • 1 pc = 12 pt

Uwaga: Dokładność fizycznych jednostek (cm, mm, in) na ekranie może się różnić w zależności od urządzenia i jego konfiguracji. Przeglądarka próbuje je przybliżyć, bazując na informacji o DPI ekranu, ale nie zawsze jest to idealne odwzorowanie.

Piksel (px) - Król jednostek absolutnych (z zastrzeżeniami)

Piksel (px) jest zdecydowanie najczęściej używaną jednostką absolutną w CSS. Jest łatwy do zrozumienia i daje precyzyjną kontrolę nad rozmiarem elementów na ekranie.

Jednak ważne jest, aby pamiętać, że piksel CSS nie zawsze równa się fizycznemu pikselowi na ekranie. Na nowoczesnych ekranach o wysokiej gęstości (np. smartfony, monitory Retina), przeglądarki skalują piksele CSS, aby elementy wyglądały na podobne rozmiary fizyczne jak na ekranach o standardowej gęstości. Jeden piksel CSS może być renderowany przy użyciu 2, 3 lub więcej fizycznych pikseli (tzw. device pixel ratio).

Mimo tej "względności" do urządzenia, px jest traktowany jako jednostka absolutna w kontekście layoutu strony, ponieważ jego rozmiar nie zależy od rozmiaru czcionki rodzica czy rozmiaru viewportu (jak jednostki relatywne, które poznamy później).

Kiedy używać jednostek absolutnych?

  • px:
    • Do definiowania rozmiarów elementów, które mają mieć stały wymiar, niezależnie od kontekstu (np. szerokość głównego kontenera strony, rozmiary ikon, grubość obramowań).
    • Czasami do definiowania rozmiaru czcionki, chociaż jednostki relatywne (em, rem) są często preferowane dla lepszej skalowalności i dostępności.
    • Do precyzyjnego pozycjonowania elementów.
  • pt, cm, mm, in, pc:
    • Głównie w **arkuszach stylów przeznaczonych do druku** (@media print), gdzie fizyczne wymiary mają większe znaczenie.
    • Rzadko używane do stylizowania na ekrany, ponieważ ich renderowanie może być nieprecyzyjne, a brak elastyczności utrudnia tworzenie responsywnych layoutów.

Wady jednostek absolutnych (szczególnie na ekranach)

  • Brak skalowalności: Rozmiary zdefiniowane w jednostkach absolutnych (zwłaszcza px dla czcionek) mogą być trudne do skalowania przez użytkownika w ustawieniach przeglądarki, co utrudnia dostępność dla osób słabowidzących.
  • Problemy z responsywnością: Layouty oparte wyłącznie na jednostkach absolutnych (np. px) są sztywne i nie dostosowują się dobrze do różnych rozmiarów ekranów i urządzeń.
  • Nieprecyzyjność jednostek fizycznych: Jak wspomniano, jednostki fizyczne (cm, mm, in, pt) mogą nie być dokładnie odwzorowane na ekranie.

Z tych powodów, w nowoczesnym web designie często preferuje się **jednostki relatywne** (%, em, rem, vw, vh), które pozwalają tworzyć bardziej elastyczne i responsywne layouty. Jednostki absolutne, zwłaszcza px, nadal mają swoje miejsce, ale należy ich używać świadomie.

Zadania praktyczne

Zadanie 1 (z rozwiązaniem)

Stwórz element <div> i nadaj mu za pomocą CSS stałą szerokość 400px, wysokość 100px oraz czerwone obramowanie o grubości 2px.

Rozwiązanie:

HTML:

<div class="box"></div>

CSS:

.box {
  width: 400px;
  height: 100px;
  border: 2px solid red;
}

Efekt: Na stronie pojawi się prostokąt o stałych wymiarach 400x100 pikseli z czerwonym obramowaniem grubości 2 pikseli.

Zadanie 2 (do samodzielnego wykonania)

Ustaw rozmiar czcionki dla elementu <h1> na 24pt. Następnie ustaw rozmiar czcionki dla elementu <p> na 16px. Zaobserwuj różnicę w wyglądzie na ekranie.

Zadanie 3 (do samodzielnego wykonania - dla arkusza druku)

Stwórz regułę CSS w bloku @media print { ... }, która ustawi marginesy strony (dla elementu body) na 2cm podczas drukowania.

Wskazówka: Aby przetestować, użyj opcji "Drukuj" w przeglądarce i wybierz podgląd wydruku lub zapis do PDF.

FAQ - Najczęściej zadawane pytania

Czy px to najlepsza jednostka dla rozmiaru czcionki?

Choć px jest łatwy w użyciu, często nie jest najlepszym wyborem dla rozmiaru czcionki ze względu na dostępność. Jednostki relatywne jak rem lub em pozwalają użytkownikom łatwiej skalować tekst w przeglądarce. Użycie px może zablokować tę możliwość w niektórych starszych przeglądarkach lub przy określonych ustawieniach.

Czy 1px zawsze oznacza 1 piksel na moim monitorze?

Niekoniecznie. Na ekranach o standardowej gęstości (ok. 96 DPI) zazwyczaj tak jest. Jednak na ekranach o wysokiej gęstości (HiDPI/Retina), jeden piksel CSS (1px) jest renderowany przy użyciu wielu fizycznych pikseli (np. 2x2 lub 3x3), aby zachować ostrość i spójny rozmiar wizualny elementów.

Kiedy jednostki fizyczne (cm, mm, in, pt) są przydatne w web designie?

Ich główne zastosowanie to arkusze stylów dla druku (@media print), gdzie odwzorowanie fizycznych wymiarów jest istotne (np. marginesy strony, rozmiar czcionki w dokumencie). Na ekranach są rzadko używane ze względu na potencjalną nieprecyzyjność i brak elastyczności.

Czy mogę mieszać jednostki absolutne i relatywne?

Tak, jest to bardzo powszechne. Można na przykład ustawić szerokość kontenera w px, a rozmiar czcionki wewnątrz niego w rem lub em, a padding w procentach (%). Wybór jednostki zależy od tego, jaki efekt chcemy osiągnąć i względem czego dany wymiar ma być zależny.