Как выровнять и оформить текст в CSS: text-align и text-decoration

text-align выравнивает текст по горизонтали внутри блока: left, right, center или justify (по ширине). text-decoration добавляет линию к тексту: underline (подчёркивание), line-through (зачёркивание), overline (линия сверху) или none, чтобы убрать линию совсем.

Попробуй прямо сейчас: смени text-align: center на right или justify у первого абзаца, а у второго и третьего - поменяй местами underline и line-through, или поставь оба сразу через пробел: underline line-through.

text-align - выравнивание по горизонтали

text-align управляет тем, как текст располагается внутри своего блока по горизонтали: left (по левому краю, значение по умолчанию), right (по правому), center (по центру) и justify (растянуть по всей ширине, выровняв оба края сразу).

text-align: center; - текст ровно посередине блока.

text-align: justify; в узкой колонке с короткими строками - между немногочисленными словами появляются неровные и заметно большие пробелы, потому что каждая строка растягивается ровно до края блока.

text-decoration - подчёркивание и зачёркивание

text-decoration добавляет линию к тексту: underline - подчёркивание (именно так по умолчанию выглядят ссылки), line-through - зачёркивание, overline - линия сверху, а none убирает любую линию, включая подчёркивание ссылок по умолчанию.

text-decoration: line-through; - зачёркнутый текст, например для цены со скидкой.

a { text-decoration: none; } без замены на другой явный признак - ссылка перестаёт быть заметной без наведения мышью, что усложняет её поиск на странице.

Что на самом деле центрирует text-align: center

text-align: center центрирует только инлайновое (строчное) содержимое - сам текст, изображения, ссылки. Если внутри блока лежит другой блочный элемент (например div со своей фиксированной шириной), text-align: center его не тронет - он останется на прежнем месте, ведь центрируется не он сам, а содержимое внутри него.

margin: 0 auto; у блочного элемента с заданной шириной - вот так центрируют сам блок, а не text-align.

text-align: center; у родителя, в надежде центрировать вложенный блочный <div> с фиксированной шириной - сработает для текста внутри этого div, но не переместит сам div к центру.

Из истории Среди значений text-decoration с самой первой версии CSS (CSS1, 1996 год) есть blink - оно должно было заставлять текст мигать. Но даже сама спецификация CSS1 не требовала от браузеров реально реализовывать мигание: "UAs must recognize the keyword 'blink', but are not required to support the blink effect" - то есть браузер обязан ПРИНЯТЬ это значение как валидное, но вовсе не обязан заставлять текст мигать. Проверено: современный Chromium действительно принимает text-decoration: blink как корректный CSS, но никакого мигания не происходит. Источник: w3.org - CSS1, раздел про text-decoration, 1996.

Частые ошибки новичков

ОшибкаЧто происходитКак исправить
text-align: center на родителе, чтобы центрировать сам блочный дочерний элемент Центрируется только текст и строчное содержимое - сам блочный элемент остаётся на прежнем месте Для блока с заданной шириной центрировать через margin: 0 auto
text-align: justify в узкой колонке с малым числом слов на строке Между словами появляются неровные, заметно большие пробелы - каждая строка растягивается ровно до края колонки Использовать justify только в достаточно широких колонках с длинными строками, либо не использовать вовсе
Убрали text-decoration: none у ссылок ради дизайна, не добавив другого явного признака Ссылку перестаёт быть видно среди обычного текста без наведения мышью - проблема для тех, кто хуже различает цвета Если убираешь подчёркивание, добавь другой явный признак ссылки - например, другой цвет или полужирность
Используют text-decoration: blink, ожидая реального мигания текста Значение принимается браузером как валидный CSS, но ни один современный браузер не реализует сам эффект мигания Для привлечения внимания использовать CSS-анимацию, а не blink

Шпаргалка

Что нужноКак сделать
По центруtext-align: center;
По правому краюtext-align: right;
По ширине (растянуть)text-align: justify; - осторожно с узкими колонками
Подчеркнутьtext-decoration: underline; (у ссылок так уже по умолчанию)
Зачеркнуть / убрать линиюtext-decoration: line-through; / text-decoration: none;

Коротко: отвечаем на вопросы

Почему text-align: center не центрирует сам блок (div), а только текст внутри него?

Потому что text-align управляет только выравниванием инлайнового (строчного) содержимого - текста, изображений, ссылок - а не положением самого блочного элемента. Чтобы центрировать блок с заданной шириной, нужен margin: 0 auto.

Как сделать зачёркнутый текст в CSS?

Свойством text-decoration: line-through; - оно проводит линию прямо через середину текста, например для отображения старой цены со скидкой.

Можно ли убирать подчёркивание у ссылок ради дизайна?

Технически да, свойством text-decoration: none, но тогда стоит добавить другой явный признак ссылки - например, отличающийся цвет или полужирность - иначе ссылку станет сложнее заметить среди обычного текста.

Категория
css
Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×