Как сделать перенос строки
Поставьте <br> там, где должна начаться новая строка. Это пустой элемент, поэтому закрывающего тега у него нет:
Адрес переносится ровно на каждом <br>. Второй абзац остается в одной строке, хотя в исходном коде в нем есть перенос: HTML считает переносы строк, табуляции и серии пробелов одним пробелом. Именно поэтому и существует <br>.
<br>, <br/> и <br /> создают один и тот же элемент. Используйте тот вариант, который принят в вашем проекте (JSX и XHTML требуют косую черту).
br или p: перенос не равен отступу
<br> завершает строку внутри того же абзаца. Новый <p> начинает новый абзац, с отступами сверху и снизу за счет внешних отступов по умолчанию. Можно создавать промежутки несколькими <br> подряд, но это ненадежно и неверно по смыслу:
Оба блока выглядят похоже, но первый для программы чтения с экрана это один абзац, а чтобы изменить отступы, придется править каждую страницу. Во втором промежуток задается одной строкой CSS.
Где <br> уместен: адреса, стихи и тексты песен, строки в подписи, то есть там, где перенос принадлежит самому тексту. Для всего остального используйте абзацы, списки или заголовки.
Как сохранить переносы строк из текста
Если текст приходит извне (поле комментария, база данных, скрипт), в нем настоящие символы перевода строки, а не теги <br>. CSS-свойство white-space: pre-line заставляет браузер показывать эти символы как переносы строк:
Одна и та же строка показана в одну строку в сером блоке и в три строки в синем. Это еще и безопаснее, чем вставлять теги <br> в пользовательский текст через innerHTML, ведь так пользователи смогли бы внедрить HTML. Чтобы сохранить еще и пробелы с отступами, используйте white-space: pre, о котором рассказывает страница пробел в HTML.
Перенос длинных слов: wbr
Длинное слово или URL без пробелов может вылезти за пределы узкого блока. <wbr> отмечает место, где браузер может перенести строку при необходимости, а в остальных случаях ничего не делает:
Первый путь выходит за границы блока; второй переносится в местах <wbr>. Для текста, который вы не контролируете, CSS-свойство overflow-wrap: anywhere разрешает переносить длинные слова в любом месте.
Как запретить перенос строки
Иногда нужно обратное: удержать вместе «10 km» или номер телефона. Есть два способа:
это пробел, на котором браузер не переносит строку, поэтому «10» и «km» остаются вместе. white-space: nowrap держит на одной строке весь span. Замените обычным пробелом или уберите класс, и при такой ширине оба фрагмента разобьются на две строки.
Частые ошибки
- Enter в исходном коде в надежде на новую строку. Переносы строк в HTML это пробелы. Используйте
<br>, отдельные элементы илиwhite-space: pre-line. <br><br><br>для отступов. Используйте абзацы иmargin.- Список из
<br>. Используйте<ul>или<ol>с<li>, которые программы чтения с экрана объявляют как список. </br>. Это некорректно. Пишите<br>.<br>в пользовательском тексте черезinnerHTML. ЗадавайтеtextContentи используйтеwhite-space: pre-line.
Часто задаваемые вопросы
Как сделать перенос строки в HTML?
Вставьте <br> там, где должна начаться новая строка: Line one<br>Line two. Нажатие Enter в HTML-файле не поможет: браузер считает переносы строк в исходном коде обычными пробелами.
Как писать: <br>, <br/> или <br />?
Все три варианта работают в HTML и создают один и тот же элемент. <br> это обычная форма HTML; варианты с косой чертой поддерживаются для совместимости с XHTML и JSX. Сам по себе </br> некорректен, хотя браузеры читают его как еще один перенос строки.
Когда использовать <br>, а когда <p>?
Используйте <br>, когда перенос строки является частью самого содержимого, например в адресе или стихотворении. Для отдельных абзацев используйте отдельные элементы <p>, а для отступов CSS margin, а не несколько <br> подряд.
Как сохранить переносы строк из текста без тегов <br>?
Задайте элементу white-space: pre-line в CSS. Тогда браузер показывает каждый перенос строки в тексте как перенос, но по-прежнему схлопывает лишние пробелы. Это удобно для комментариев пользователей и текста, загруженного через JavaScript.
Как запретить перенос строки в HTML?
Оберните текст в элемент с white-space: nowrap или соедините два слова неразрывным пробелом , чтобы они всегда оставались на одной строке.