Menu

Spacja w HTML:  , wiele spacji i white-space

Przeglądarki scalają każdy ciąg spacji w HTML w jedną. Dowiedz się, jak dodać dodatkowe spacje przez &nbsp;, co robi twarda spacja, jak zachować spacje i tabulatory przez <pre> i white-space oraz kiedy lepszym narzędziem są odstępy w CSS.

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

Dodawanie spacji w HTML

Wpisz pięć spacji między dwoma słowami w HTML, a przeglądarka pokaże jedną. Każdy ciąg spacji, tabulatorów i znaków nowej linii scala się w jedną spację. Żeby dodać dodatkowe spacje, użyj encji twardej spacji &nbsp;, raz na każdą spację:

&nbsp; sprawdza się przy kilku spacjach w linii tekstu. Przy większych odstępach albo odstępach między elementami używaj CSS, pokazanego niżej.

Co robi  

&nbsp; to twarda spacja (znak U+00A0). Ma dwa efekty:

  1. Nigdy się nie scala, więc trzy takie encje dają trzy spacje.
  2. Linia nigdy się przy niej nie łamie, więc słowa po obu stronach zostają razem.

To drugie jest jej prawdziwym zadaniem. Liczby z jednostkami, inicjały i krótkie wyrażenia, które źle wyglądają rozdzielone na dwie linie, łączy się przez &nbsp;:

W szarym polu "10" i "km" lądują w różnych liniach. W zielonym nie da się ich rozdzielić. Żeby utrzymać razem dłuższy fragment, white-space: nowrap na spanie jest prostsze niż łańcuch encji; zobacz stronę o nowej linii.

Encje spacji o różnej szerokości

HTML ma nazwane znaki dla szerszych i węższych spacji. One też się nie scalają, więc przydają się do precyzyjnych odstępów w tekście:

EncjaNazwaSzerokość
&nbsp;Twarda spacjaTaka jak zwykła spacja
&ensp;Spacja półfiretowa (en space)Pół ema
&emsp;Spacja firetowa (em space)Jeden em (rozmiar czcionki)
&thinsp;Wąska spacja (thin space)Ułamek ema, zależny od czcionki
&#8239;Wąska twarda spacjaWąska i bez łamania linii

Niebieskie podświetlenie pokazuje szerokość każdej spacji. Tylko &nbsp; i &#8239; blokują też łamanie linii.

Zachowanie wszystkich spacji: pre i white-space

Gdy odstępy są częścią treści (kod, ASCII art, wyrównane kolumny, poezja), zachowaj wszystkie białe znaki zamiast dodawać encje. Element <pre> robi to domyślnie, a właściwość CSS white-space robi to dla dowolnego elementu:

Wartość white-spaceSpacjeZnaki nowej liniiZawija długie linie
normal (domyślna)ScalaneStają się spacjamiTak
nowrapScalaneStają się spacjamiNie
preZachowaneZachowaneNie
pre-wrapZachowaneZachowaneTak
pre-lineScalaneZachowaneTak

Dla tekstu od użytkownika zwykle najlepsze jest pre-wrap: zachowuje odstępy i nadal zawija tekst na wąskich ekranach. pre zostawia linie bez zmian i zamiast zawijać, przewija albo wychodzi poza pole.

W pre zachowywane są też tabulatory. Domyślnie mają szerokość 8 spacji, a właściwość tab-size to zmienia (tab-size: 4).

Odstępy w CSS

Większość sytuacji "potrzebuję tu spacji" to tak naprawdę układ, a CSS radzi sobie z nim lepiej niż encje, bo odstęp jest spójny i zmienia się go w jednym miejscu:

margin i padding oddzielają elementy, gap oddziela elementy w kontenerze flex lub grid, a letter-spacing i word-spacing rozsuwają sam tekst. Żeby wciąć pierwszą linię akapitu, użyj text-indent, opisanego na stronie o wyśrodkowaniu tekstu.

Odstęp między elementami inline

Druga strona scalania: białe znaki między dwoma elementami inline lub inline-block nadal liczą się jako jedna spacja. Znak nowej linii między dwoma przyciskami w kodzie tworzy między nimi mały odstęp:

Pierwsza para ma odstęp ze znaku nowej linii w kodzie. W kontenerze flex białe znaki między elementami są ignorowane, więc druga para się styka. Używaj flexa i gap, gdy chcesz dokładnie kontrolować odstęp.

Częste błędy

  • Łańcuchy &nbsp; do układu. Psują się, gdy tylko zmieni się czcionka albo rozmiar ekranu. Używaj margin, padding albo gap.
  • Wpisywanie dodatkowych spacji i oczekiwanie, że będą widoczne. Scalają się. Użyj &nbsp; albo white-space: pre-wrap.
  • Pisanie &nbsp bez średnika. Przeglądarki zwykle to akceptują, ale to niepoprawne i w niektórych miejscach nie działa. Zawsze kończ na ;.
  • Używanie &nbsp; wszędzie, żeby zablokować zawijanie. Długi ciąg tekstu bez możliwości łamania wychodzi poza ekran na telefonach. Łącz tylko to, co musi zostać razem.
  • Wcinanie akapitów spacjami. Użyj text-indent w CSS.

Najczęściej zadawane pytania

Jak dodać spację w HTML?

Pojedyncza spacja działa tak, jak ją wpiszesz, ale dodatkowe spacje scalają się w jedną. Żeby dodać więcej, użyj encji twardej spacji &nbsp;, jednej na każdą spację: a&nbsp;&nbsp;&nbsp;b. Do odstępów w układzie używaj zamiast tego margin, padding albo gap w CSS.

Co oznacza &nbsp; w HTML?

&nbsp; to twarda spacja (non-breaking space). Wygląda jak zwykła spacja, ale przeglądarka nigdy nie łamie przy niej linii i nigdy jej nie scala, więc utrzymuje razem wyrażenia takie jak 10&nbsp;km i pozwala dodawać dodatkowe spacje.

Dlaczego HTML ignoruje moje spacje?

HTML scala białe znaki: każdy ciąg spacji, tabulatorów i znaków nowej linii wyświetla się jako jedna spacja, a białe znaki na początku i końcu linii są usuwane. Żeby je zachować, użyj &nbsp;, <pre> albo właściwości CSS white-space.

Jak dodać tabulator w HTML?

Poza tekstem preformatowanym HTML nie ma widocznego tabulatora. W <pre> lub elemencie z white-space: pre znak tabulacji jest zachowywany, a właściwość CSS tab-size ustawia jego szerokość. Do wcięcia akapitu użyj text-indent albo padding-inline-start w CSS.

Czym różni się &nbsp; od &emsp;?

&nbsp; jest szeroka jak zwykła spacja. &ensp; ma szerokość pół ema, a &emsp; jednego ema (szerokości rozmiaru czcionki). &ensp; i &emsp; się nie scalają, ale w odróżnieniu od &nbsp; linia nadal może się przy nich złamać.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ