Как выровнять текст по центру в 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.- Длинные абзацы по центру. Центрируйте заголовки и короткие строки; основной текст выравнивайте по началу.
- Отступы через
или пробелы. Используйте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 сдвигает весь блок. Пробелы или в тексте не дают надежного отступа.