Menu

Выравнивание текста по центру в HTML: text-align и отступы

Текст в HTML выравнивают по центру CSS-свойством text-align: center. Разберем, куда его ставить, почему оно не работает у span, как отцентрировать текст по вертикали, как выровнять текст по началу, концу или ширине и как сделать отступ абзаца.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Как выровнять текст по центру в HTML

Задайте CSS-свойство text-align: center элементу, в котором находится текст:

text-align центрирует каждую строку внутри элемента, включая строчные вещи вроде ссылок, картинок и кнопок. Оно наследуется, поэтому, если задать его контейнеру, текст будет по центру во всем, что внутри.

Ставьте его блоку, а не span

text-align работает у блочных контейнеров: <p>, <div>, заголовков, ячеек таблицы. У <span> или <a> оно ничего не делает, потому что строчный элемент шириной ровно со свой текст и центрировать внутри негде:

Решение всегда одно: перенесите text-align: center в родительский блок.

Блок по центру, строки по левому краю

В абзаце из нескольких строк полностью отцентрированный текст трудно читать, потому что каждая строка начинается в другом месте. Распространенный прием: отцентрировать блок на странице, а его текст оставить выровненным по началу:

margin-inline: auto центрирует блок с заданной шириной, а text-align центрирует строки внутри него. Центрирование блоков (через flexbox, grid или margin) описано на странице как отцентрировать div.

Текст по центру по вертикали

text-align работает только по горизонтали. Чтобы отцентрировать текст по вертикали внутри блока, сделайте блок flex-контейнером:

align-items: center центрирует по вертикали, justify-content: center по горизонтали, а text-align: center по-прежнему центрирует строки относительно друг друга, если их несколько. Прием с line-height работает только для одной строки текста в блоке известной высоты.

Все значения text-align

ЗначениеРезультат
start (по умолчанию)Строки начинаются у начального края: слева в русском и английском, справа в арабском и иврите
endСтроки заканчиваются у конечного края
centerСтроки по центру
justifyСтроки растянуты до обоих краев (кроме последней)
left, rightВсегда слева или всегда справа, независимо от языка

Предпочитайте start и end вместо left и right: они автоматически меняются местами в языках с письмом справа налево, как показывает последний блок.

Старый тег center

На старых страницах текст центрируют через <center> или атрибут align:

<center>Old way</center>
<p align="center">Also old</p>

Оба способа устарели. Браузеры все еще их отображают, чтобы старые сайты не ломались, но в современном HTML они некорректны и смешивают раскладку с разметкой. Используйте text-align: center в CSS.

Отступы в тексте

Тега для отступа в HTML нет, а набранные пробелы схлопываются (см. пробел в HTML). Отступы задает CSS:

ОтступCSS
Только первая строкаtext-indent: 2em
Весь блокpadding-inline-start: 2em или margin-inline-start: 2em
Висячий (первая строка выступает)padding-inline-start: 2em; text-indent: -2em

em привязывает отступ к размеру шрифта, поэтому он масштабируется вместе с текстом.

Частые ошибки

  • text-align у строчного элемента. Задайте его родительскому блоку.
  • Ожидание, что text-align отцентрирует блок. Оно центрирует текст и строчное содержимое, а не блок с шириной. Для блоков используйте margin-inline: auto или flexbox.
  • <center> или align="center". Устарели. Используйте CSS.
  • Длинные абзацы по центру. Центрируйте заголовки и короткие строки; основной текст выравнивайте по началу.
  • Отступы через &nbsp; или пробелы. Используйте text-indent или padding.

Часто задаваемые вопросы

Как выровнять текст по центру в HTML?

Добавьте text-align: center элементу, который содержит текст, например <p style="text-align: center"> или правило CSS вроде h1 { text-align: center; }. Оно центрирует каждую строку текста и строчное содержимое внутри этого элемента.

Почему text-align: center не работает у span?

Span строчный, поэтому он шириной ровно со свой текст, и центрировать внутри него негде. Поставьте text-align: center родительскому блоку (<p> или <div> вокруг него) или сделайте span display: block.

Как отцентрировать текст по вертикали?

Сделайте контейнер flex-блоком: display: flex; align-items: center; (добавьте justify-content: center, чтобы центрировать и по горизонтали). Для одной строки в блоке фиксированной высоты подойдет и line-height, равный высоте.

Тег <center> еще работает?

Он устарел. <center> и атрибут align="center" больше не входят в стандарт. Браузеры все еще отображают их ради старых страниц, но в новом коде нужно использовать text-align: center в CSS.

Как сделать отступ текста в HTML?

Через CSS. text-indent: 2em дает отступ первой строки абзаца, а padding-inline-start: 2em или margin-inline-start: 2em сдвигает весь блок. Пробелы или &nbsp; в тексте не дают надежного отступа.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ