Jak wyśrodkować tekst w HTML
Użyj właściwości CSS text-align: center na elemencie, który zawiera tekst:
text-align wyśrodkowuje każdą linię w elemencie, łącznie z elementami liniowymi, takimi jak linki, obrazki i przyciski. Jest dziedziczona, więc ustawienie jej na kontenerze wyśrodkowuje tekst we wszystkim, co jest w środku.
Na bloku, nie na spanie
text-align działa na kontenerach blokowych: <p>, <div>, nagłówkach, komórkach tabeli. Na <span> czy <a> nie robi nic, bo element liniowy jest tylko tak szeroki jak jego tekst i nie ma w nim miejsca na wyśrodkowanie:
Rozwiązanie jest zawsze takie samo: przenieś text-align: center na blok nadrzędny.
Blok na środku, linie od lewej
W akapicie z kilkoma liniami całkowicie wyśrodkowany tekst trudno się czyta, bo każda linia zaczyna się w innym miejscu. Częsty wzorzec to wyśrodkowanie bloku na stronie i wyrównanie jego tekstu do początku:
margin-inline: auto wyśrodkowuje blok, który ma szerokość, a text-align wyśrodkowuje linie w jego wnętrzu. Wyśrodkowanie pudełek (flexboksem, gridem lub marginesami) opisuje strona wyśrodkowanie diva.
Wyśrodkowanie tekstu w pionie
text-align działa tylko w poziomie. Aby wyśrodkować tekst w pionie wewnątrz pudełka, zrób z pudełka kontener flex:
align-items: center wyśrodkowuje w pionie, justify-content: center w poziomie, a text-align: center nadal wyśrodkowuje linie względem siebie, gdy jest ich kilka. Sztuczka z line-height działa tylko dla jednej linii tekstu w pudełku o znanej wysokości.
Wszystkie wartości text-align
| Wartość | Efekt |
|---|---|
start (domyślna) | Linie zaczynają się przy krawędzi początkowej: po lewej w polskim, po prawej w arabskim i hebrajskim |
end | Linie kończą się przy krawędzi końcowej |
center | Linie wyśrodkowane |
justify | Linie rozciągnięte do obu krawędzi (poza ostatnią) |
left, right | Zawsze do lewej albo zawsze do prawej, niezależnie od języka |
Wybieraj start i end zamiast left i right: dla języków pisanych od prawej do lewej odwracają się automatycznie, co pokazuje ostatnie pudełko.
Stary znacznik center
Stare strony wyśrodkowują tekst przez <center> albo atrybut align:
<center>Old way</center>
<p align="center">Also old</p>
Oba są przestarzałe. Przeglądarki nadal je renderują, żeby stare strony się nie psuły, ale w obecnym HTML są niepoprawne i mieszają układ z kodem. Używaj text-align: center w CSS.
Wcięcia tekstu
HTML nie ma znacznika wcięcia, a wpisane spacje się zwijają (patrz spacje w HTML). Wcięcia robi się w CSS:
| Wcięcie | CSS |
|---|---|
| Tylko pierwsza linia | text-indent: 2em |
| Cały blok | padding-inline-start: 2em lub margin-inline-start: 2em |
| Wysunięte (pierwsza linia na zewnątrz) | padding-inline-start: 2em; text-indent: -2em |
em wiąże wcięcie z rozmiarem czcionki, więc skaluje się razem z tekstem.
Częste błędy
text-alignna elemencie liniowym. Umieść go na bloku nadrzędnym.- Oczekiwanie, że
text-alignwyśrodkuje pudełko. Wyśrodkowuje tekst i treść liniową, a nie blok o danej szerokości. Do pudełek użyjmargin-inline: autolub flexboksa. - Używanie
<center>lubalign="center". Przestarzałe. Użyj CSS. - Wyśrodkowywanie długich akapitów. Wyśrodkowuj nagłówki i krótkie linie; tekst główny wyrównuj do początku.
- Wcięcia przez
lub spacje. Użyjtext-indentlub paddingu.
Najczęściej zadawane pytania
Jak wyśrodkować tekst w HTML?
Dodaj text-align: center do elementu, który zawiera tekst, na przykład <p style="text-align: center"> albo regułę CSS w rodzaju h1 { text-align: center; }. Wyśrodkowuje każdą linię tekstu i treść liniową w tym elemencie.
Dlaczego text-align: center nie działa na moim spanie?
Span jest elementem liniowym, więc jest tylko tak szeroki jak jego tekst i nie ma w nim miejsca na wyśrodkowanie. Umieść text-align: center na bloku nadrzędnym (<p> lub <div> wokół niego) albo ustaw spanowi display: block.
Jak wyśrodkować tekst w pionie?
Zrób z kontenera flexboksa: display: flex; align-items: center; (dodaj justify-content: center, żeby wyśrodkować też w poziomie). Dla jednej linii w pudełku o stałej wysokości działa też line-height równe wysokości.
Czy znacznik <center> jest nadal poprawny?
Nie. <center> i atrybut align="center" są przestarzałe. Przeglądarki nadal je renderują na potrzeby starych stron, ale nowy kod powinien używać text-align: center w CSS.
Jak zrobić wcięcie tekstu w HTML?
Użyj CSS. text-indent: 2em wcina pierwszą linię akapitu, a padding-inline-start: 2em lub margin-inline-start: 2em wcina cały blok. Spacje lub w tekście nie dają niezawodnego wcięcia.