Тег hr и br в HTML: тематический разрыв и перенос строки

Теги <br> и <hr> выглядят просто - один переносит строку, другой рисует линию. Но у обоих узкое, конкретное назначение: <br> годится только там, где перенос строки - часть одной мысли (стихи, адрес), а <hr> обозначает не просто черту, а разрыв темы. Использовать их вместо отступов между абзацами - частая ошибка, которая ломает разметку для стилей и вспомогательных технологий, даже если на глаз всё выглядит нормально.

Присмотрись к результату справа: у первого и третьего абзаца есть синяя рамка слева - её даёт CSS-правило для тега <p>. У второго куска текста рамки нет, хотя на глаз он тоже выглядит отдельным блоком - для браузера это не абзац, а просто перенос строки внутри тела страницы. Попробуй обернуть его в <p>...</p> - рамка появится.

Тег br: перенос строки внутри одного абзаца

<br> - пустой (void) тег: у него нет содержимого и закрывающего тега, как у <img>. Он уместен только там, где перенос строки значим сам по себе, а не является границей между независимыми мыслями - например, в стихотворении или в адресе, где каждая строка - часть одного целого. Использовать его вместо тега <p> для разделения самостоятельных абзацев или чтобы добавить "воздух" между блоками - плохая идея: такой отступ не настраивается через CSS и выглядит по-разному в зависимости от размера шрифта и ширины экрана.

Роняет тень на тихий сад<br>Вечерний луч зари. - перенос строки значим: это две строки одного стихотворения.

Первый абзац.<br><br>Второй абзац. - выглядит как два абзаца, но для браузера и для стилей это один блок текста с двумя переносами строки внутри.

Тег hr: черта, которая обозначает смену темы

<hr> - тоже пустой (void) тег, но по смыслу он не про линию, а про разрыв: он обозначает переход к новой теме или смену сцены внутри раздела. Если нужна просто декоративная черта без смены темы - например, чтобы визуально отделить блок в дизайне - правильнее оформить её через CSS-рамку (border) у обычного элемента, а не использовать <hr> не по назначению.

<p>...конец первой главы.</p><hr><p>Глава 2. Новое место действия...</p> - настоящая смена темы, hr уместен.

<hr color="silver" width="80%" noshade> - атрибуты color, width и noshade устарели ещё в HTML4; тот же внешний вид сегодня задают через CSS.

Из истории В RFC 1866 (спецификация HTML 2.0, ноябрь 1995 года) тег HR описан чисто презентационно - как "разделитель между разделами текста, обычно горизонтальная линия на всю ширину или эквивалентная графика". Современная спецификация переопределила его семантически: теперь это "тематический разрыв" между смысловыми блоками, а не просто линия - тот же путь от оформления к смыслу, что прошли теги b и i. Источник.

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

ОшибкаЧто происходитКак исправить
Использовать <br><br> вместо закрытия и открытия <p> для нового абзаца Не создаёт настоящую границу: стили, заданные для тега p, к такому тексту не применяются, а вспомогательные технологии не получают чёткого сигнала о конце одной мысли и начале другой Закрывать </p> и открывать новый <p>, расстояние между ними задавать через CSS margin
Ставить несколько <br> подряд, чтобы получить "воздух" между блоками Такой отступ не настраивается через CSS и выглядит по-разному в зависимости от шрифта и ширины экрана Использовать margin или padding в CSS у нужного блока
Задавать внешний вид <hr> через атрибуты align, width, size, color, noshade Эти атрибуты HTML4 считаются устаревшими и могут по-разному поддерживаться браузерами Стилизовать линию через CSS-свойства border, width, margin
Ставить <hr> просто для украшения, без реальной смены темы Вводит в заблуждение поисковики и вспомогательные технологии, которые ожидают за hr настоящий тематический разрыв Использовать <hr> только между разными темами или разделами; для декоративной линии - CSS-рамка у обычного блока

Шпаргалка

Тег или задачаЧто использовать
<br>Перенос строки внутри одной мысли (стихи, адрес) - пустой тег, без закрытия
<hr>Тематический разрыв между разделами - пустой тег, без закрытия
Нужен просто отступ между абзацамиCSS margin у <p>, не <br>
Нужна декоративная линия без смены темыCSS border у обычного блока, не <hr>
Устаревшие атрибуты <hr> (align/width/size/color/noshade)Заменить на CSS: border, width, margin

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

Нужно ли закрывать br и hr отдельным закрывающим тегом?

Нет. Оба тега - пустые (void) элементы: у них не может быть содержимого, поэтому закрывающий тег не пишется, точно так же, как у img. Иногда перед закрывающей скобкой добавляют слэш по старой привычке из XHTML, но в обычном HTML он не обязателен.

Можно ли использовать br, чтобы отделить один абзац от другого?

Технически перенос строки появится и текст визуально разъедется на два куска, но настоящей границы абзаца это не создаст: стили и отступы, заданные для тега p, к такому тексту не применяются, а вспомогательные технологии не получают чёткого сигнала о конце одной мысли и начале другой. Правильно закрывать один тег p и открывать следующий, а расстояние между ними задавать через CSS margin.

Правда ли, что hr - это просто линия для украшения страницы?

Исторически - да, в первых версиях HTML этот тег описывался просто как горизонтальная черта. Но современная спецификация определяет его через смысл: hr обозначает тематический разрыв - смену темы или сцены внутри раздела, а не просто визуальную линию. Если нужна декоративная линия без смены темы, правильнее оформить её через CSS-рамку у обычного блока.

Какие атрибуты hr устарели и чем их заменить?

В HTML4 у hr были презентационные атрибуты align, width, size, color и noshade, управлявшие внешним видом линии. Сегодня они считаются устаревшими - тот же результат, толщину, цвет, ширину и стиль линии, теперь задают через CSS-свойства вроде border и width.

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

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

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

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

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

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