Как добавить пробелы в HTML
Напишите пять пробелов между двумя словами в HTML, и браузер покажет один. Любая серия пробелов, табуляций и переносов строк схлопывается в один пробел. Чтобы добавить лишние пробелы, используйте сущность неразрывного пробела , по одной на каждый пробел:
подходит для нескольких пробелов в строке текста. Для больших промежутков или расстояния между элементами используйте CSS, о нем ниже.
Что делает
это неразрывный пробел (символ U+00A0). У него два эффекта:
- Он никогда не схлопывается, поэтому три таких символа дают три пробела.
- Строка на нем никогда не переносится, поэтому слова по обе стороны остаются вместе.
Второе и есть его настоящая работа. Числа и единицы измерения, инициалы и короткие фразы, которые плохо смотрятся разорванными на две строки, соединяют через :
В сером блоке «10» и «km» оказываются на разных строках. В зеленом их разделить нельзя. Чтобы удержать вместе фрагмент подлиннее, проще задать span white-space: nowrap, чем выстраивать цепочку сущностей; подробнее на странице перенос строки.
Сущности пробелов разной ширины
В HTML есть именованные символы для более широких и узких пробелов. Они тоже не схлопываются, поэтому удобны для тонкой настройки промежутков в тексте:
| Сущность | Название | Ширина |
|---|---|---|
| Неразрывный пробел | Как обычный пробел |
  | Пробел en | Половина em |
  | Пробел em | Один em (размер шрифта) |
  | Тонкий пробел | Доля em, зависит от шрифта |
  | Узкий неразрывный пробел | Тонкий и без переноса строки |
Синяя подсветка показывает ширину каждого пробела. Переносы строк запрещают только и  .
Как сохранить все пробелы: pre и white-space
Когда пробелы являются частью содержимого (код, ASCII-графика, выровненные столбцы, стихи), сохраните все пробельные символы, а не добавляйте сущности. Элемент <pre> делает это по умолчанию, а CSS-свойство white-space делает это для любого элемента:
Значение white-space | Пробелы | Переносы строк | Переносит длинные строки |
|---|---|---|---|
normal (по умолчанию) | Схлопываются | Становятся пробелами | Да |
nowrap | Схлопываются | Становятся пробелами | Нет |
pre | Сохраняются | Сохраняются | Нет |
pre-wrap | Сохраняются | Сохраняются | Да |
pre-line | Схлопываются | Сохраняются | Да |
Для пользовательского текста обычно нужен pre-wrap: он сохраняет пробелы и все равно переносит строки на узких экранах. pre оставляет строки как есть, а длинные прокручиваются или вылезают за пределы блока.
Внутри pre сохраняются и табуляции. По умолчанию их ширина 8 пробелов, а свойство tab-size ее меняет (tab-size: 4).
Промежутки через CSS
Чаще всего «здесь нужен пробел» на деле означает раскладку, и CSS справляется с этим лучше сущностей: промежуток остается одинаковым и меняется в одном месте:
margin и padding задают расстояния между элементами, gap задает промежутки между элементами flex- или grid-контейнера, letter-spacing и word-spacing меняют расстояния в самом тексте. Чтобы сделать отступ первой строки абзаца, используйте text-indent, о котором рассказывает страница выравнивание текста по центру.
Промежуток между строчными элементами
Обратная сторона схлопывания: пробельные символы между двумя строчными или inline-block элементами все равно считаются одним пробелом. Перенос строки между двумя кнопками в исходном коде ставит между ними небольшой промежуток:
У первой пары есть промежуток из-за переноса строки в исходном коде. Во flex-контейнере пробелы между элементами игнорируются, поэтому вторая пара соприкасается. Используйте flex и gap, когда нужно точно управлять расстоянием.
Частые ошибки
- Цепочки
для раскладки. Они ломаются, как только меняется шрифт или размер экрана. Используйтеmargin,paddingилиgap. - Лишние пробелы в надежде, что они появятся. Они схлопываются. Используйте
илиwhite-space: pre-wrap.  без точки с запятой. Браузеры обычно его принимают, но это некорректно и в некоторых местах не работает. Всегда заканчивайте на;. повсюду, чтобы запретить перенос. Длинный неразрывный фрагмент вылезает за экран на телефонах. Соединяйте только то, что обязано оставаться вместе.- Отступ абзаца пробелами. Используйте
text-indentв CSS.
Часто задаваемые вопросы
Как сделать пробел в HTML?
Один пробел работает как написан, но лишние пробелы схлопываются в один. Чтобы добавить больше, используйте сущность неразрывного пробела , по одной на пробел: a b. Для промежутков в раскладке используйте CSS margin, padding или gap.
Что означает в HTML?
это неразрывный пробел. Он выглядит как обычный пробел, но браузер никогда не переносит на нем строку и никогда его не схлопывает, поэтому он удерживает вместе слова вроде 10 km и позволяет добавлять лишние пробелы.
Почему HTML игнорирует мои пробелы?
HTML схлопывает пробельные символы: любая серия пробелов, табуляций и переносов строк показывается как один пробел, а пробелы в начале и конце строки удаляются. Чтобы их сохранить, используйте , <pre> или CSS-свойство white-space.
Как сделать табуляцию в HTML?
Вне предварительно отформатированного текста видимой табуляции в HTML нет. Внутри <pre> или элемента с white-space: pre символ табуляции сохраняется, а CSS-свойство tab-size задает его ширину. Для отступа абзаца используйте в CSS text-indent или padding-inline-start.
Чем отличается от  ?
шириной с обычный пробел.   шириной в половину em, а   в один em (ширина, равная размеру шрифта).   и   не схлопываются, но, в отличие от , строка на них все же может переноситься.