Co robi line-height
line-height ustala wysokość każdej linii tekstu. Różnica między tą wysokością a wysokością potrzebną samej czcionce jest dzielona na pół i dodawana nad literami i pod nimi, więc właśnie tak kontrolujesz odstęp między liniami.
Wszystkie trzy akapity mają czcionkę 16px. Linie mają wysokość 16px, 24px i 32px.
Wartości: bez jednostki, długość, procent, normal
| Wartość | Przykład | Wysokość linii dla tekstu 16px | Dziedziczona przez dzieci jako |
|---|---|---|---|
| Liczba | 1.5 | 24px | Liczba (1.5), przeliczana dla każdego elementu |
| Długość | 24px, 1.5em, 1.5rem | 24px | Obliczona długość (24px) |
| Procent | 150% | 24px | Obliczona długość (24px) |
normal | normal | Z czcionki, często około 1.2 | normal |
Pierwszy i drugi wiersz wyglądają na jednym elemencie tak samo. Różnica pojawia się dopiero, gdy dziecko ma inny rozmiar czcionki, o czym mówi następna sekcja.
Dlaczego bez jednostki to dobry wybór domyślny
Wysokość linii 1.5em albo 150% jest zamieniana na piksele na rodzicu, a dzieci dziedziczą te piksele. Dziecko z większą czcionką dostaje wtedy linie niższe niż jego litery. 1.5 bez jednostki jest dziedziczone jako sama liczba i mnożone przez rozmiar czcionki każdego dziecka.
Oba nagłówki zawijają się na dwie linie. Pierwszy dziedziczy linie 21px przy literach 32px, więc jego linie nachodzą na siebie. Drugi dostaje linie 32 × 1.5 = 48px. Ustaw line-height raz na body jako liczbę, a większość stron nigdy nie będzie potrzebować go ponownie.
Wypróbuj wartości sam
Wypróbuj 1, 2, 30px, 200% i normal. Chrome zwraca normal jako samo słowo, a nie wartość w pikselach, bo jej rozmiar pochodzi z czcionki.
Dobre wartości dla czytelnego tekstu
- Tekst główny: od 1.4 do 1.6. Dłuższe linie potrzebują większej interlinii, żeby oko znalazło początek następnej linii.
- Nagłówki: od 1.1 do 1.3. Duży tekst z odstępem 1.5 wygląda jak osobne linie, a nie jeden nagłówek.
- Przyciski i jednoliniowe etykiety: od 1 do 1.25, a wysokość daje padding.
Dla dostępności kryterium sukcesu WCAG 1.4.12 wymaga, żeby strona nadal działała, gdy czytelnik ustawi interlinię na 1.5 rozmiaru czcionki, więc unikaj stałych wysokości pól tekstowych, które by ją przycinały.
Wyśrodkowanie jednej linii tekstu w pionie
Gdy pudełko zawiera dokładnie jedną linię, line-height równe wysokości pudełka umieszcza tekst na jego pionowym środku, bo dodatkowe miejsce jest dzielone po równo nad i pod nim:
Przestaje to działać, gdy tylko tekst zawinie się na dwie linie, bo każda linia ma wtedy 40px wysokości. Wszystko, co może się zawijać, wyśrodkuj flexboxem, jak pokazuje strona o wyśrodkowaniu diva.
Skrót font
Skrócona właściwość font ustawia rozmiar i wysokość linii razem, oddzielone ukośnikiem:
body {
font: 16px/1.5 system-ui, sans-serif; /* size 16px, line-height 1.5 */
}
Skrót resetuje każdą właściwość czcionki, której nie wymienia (w tym line-height do normal, gdy pominiesz część po ukośniku), więc pisz go przed pojedynczymi regułami font-*.
Częste błędy
- Używanie
emlub%na kontenerze. Dzieci dziedziczą stałą długość. Użyj liczby bez jednostki. - Stałe
heightna polu tekstowym. Gdy tekst się zawinie albo czytelnik zwiększy odstępy, wyleje się poza pole. Pozwól treści ustalić wysokość. - Zbyt ciasny tekst główny.
line-height: 1utrudnia czytanie akapitów. Zacznij od 1.5. - Oczekiwanie, że
line-heightdoda odstęp między akapitami. Do tego służymarginna akapitach. - Poleganie na
normal. Zmienia się w zależności od czcionki, więc układ przesuwa się przy zmianie czcionki.
Najczęściej zadawane pytania
Co robi line-height w CSS?
Ustala wysokość każdego pola linii tekstu. Dodatkowe miejsce ponad wysokość samej czcionki jest dzielone po równo nad literami i pod nimi, więc większe line-height oznacza większy odstęp między liniami.
Czy line-height powinno mieć jednostkę?
Zwykle nie. Wartość bez jednostki, taka jak 1.5, jest mnożona przez rozmiar czcionki każdego elementu, więc zachowuje proporcje w dzieciach o innym rozmiarze. Wartość z jednostką jest obliczana raz i dziedziczona jako stała długość.
Jakie line-height jest dobre dla tekstu?
Od 1.4 do 1.6 dla akapitów i około 1.1 do 1.3 dla dużych nagłówków. Wytyczne WCAG na poziomie AAA wymagają co najmniej 1.5 w akapitach.
Czym jest line-height: normal?
To wartość domyślna. Przeglądarka używa wartości z metryk samej czcionki, zwykle około 1.2, ale innej dla każdej czcionki, więc nie da się jej przewidzieć przy różnych czcionkach.
Jak zmienić interlinię w HTML?
HTML nie ma atrybutu do interlinii. Użyj właściwości CSS, na przykład <p style="line-height: 2;"> dla podwójnej interlinii.