Menu

Wyśrodkowanie tekstu w HTML: text-align, w pionie i wcięcia

Tekst w HTML wyśrodkujesz właściwością CSS text-align: center. Dowiedz się, gdzie ją umieścić, dlaczego nie działa na span, jak wyśrodkować tekst w pionie, jak wyrównać tekst do początku, końca lub obu krawędzi i jak robić wcięcia akapitów.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

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
endLinie kończą się przy krawędzi końcowej
centerLinie wyśrodkowane
justifyLinie rozciągnięte do obu krawędzi (poza ostatnią)
left, rightZawsze 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ęcieCSS
Tylko pierwsza liniatext-indent: 2em
Cały blokpadding-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-align na elemencie liniowym. Umieść go na bloku nadrzędnym.
  • Oczekiwanie, że text-align wyśrodkuje pudełko. Wyśrodkowuje tekst i treść liniową, a nie blok o danej szerokości. Do pudełek użyj margin-inline: auto lub flexboksa.
  • Używanie <center> lub align="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 &nbsp; lub spacje. Użyj text-indent lub 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 &nbsp; w tekście nie dają niezawodnego wcięcia.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ