
В веб-разметке перенос строки определяется не только структурой HTML, но и стилями, заданными в CSS. Для управления поведением текста применяются свойства white-space, word-wrap и overflow-wrap, которые позволяют контролировать, где именно браузер разрывает строку и как реагирует на длинные фрагменты текста.
Если необходимо, чтобы предложение автоматически переносилось при достижении границы контейнера, используется свойство word-wrap: break-word; или его современный аналог overflow-wrap: break-word;. Эти параметры заставляют браузер разрывать слово или предложение, когда нет возможности уместить его целиком в заданной ширине блока.
Для сохранения разметки с точными пробелами и принудительными переносами строк подходит значение white-space: pre-line;. Оно интерпретирует переводы строк из исходного HTML-кода, сохраняя при этом обычное поведение пробелов. Такой подход удобен при работе с контентом, где структура текста заранее определена, например в шаблонах сообщений или интерфейсных подсказках.
Оптимальный выбор свойства зависит от задачи: для адаптивного текста важна автоматическая гибкость, а для форматированных блоков – точное соблюдение оригинальной структуры. Понимание различий между способами переноса помогает избежать проблем с читаемостью и сохранить визуальную целостность интерфейса.
Использование свойства white-space для управления переносами
Свойство white-space контролирует обработку пробелов, табуляций и переносов строк в тексте. Основные значения, влияющие на переносы: normal, nowrap, pre, pre-wrap, pre-line.
normal позволяет браузеру автоматически переносить слова по границам блока. Используется по умолчанию для обычного текста.
nowrap запрещает перенос строк внутри элемента. Текст будет оставаться в одной линии, даже если выходит за пределы контейнера. Часто применяют для кнопок или меню.
pre сохраняет все пробелы и переносы, как в исходном HTML, без автоматического переноса. Полезно для отображения кода или поэтических текстов.
pre-wrap объединяет преимущества pre и normal: сохраняет пробелы и переносы из HTML, но позволяет браузеру переносить длинные слова, чтобы избежать горизонтальной прокрутки.
pre-line удаляет лишние пробелы, но сохраняет переносы строк. Применяется для текста с явными разрывами строк, где важно компактное отображение.
Рекомендуется использовать white-space: pre-wrap для блоков с длинными текстами, которые должны сохранять исходные переносы и при этом корректно адаптироваться к ширине контейнера. nowrap подходит для элементов интерфейса, где перенос недопустим.
Для контроля переноса конкретных слов дополнительно можно использовать word-break или overflow-wrap, сочетая их с white-space для полного управления поведением текста в разных сценариях.
Применение свойства word-wrap для переноса длинных слов

Свойство word-wrap управляет переносом слов, которые не помещаются в контейнер по ширине. Оно полезно при работе с длинными URL, техническими терминами или непрерывными строками текста без пробелов.
Основные значения:
| Значение | Описание |
|---|---|
| normal | Слова переносятся только в местах стандартного пробела. Длинные слова могут выходить за пределы блока. |
| break-word | Длинные слова разрываются для переноса на новую строку, предотвращая горизонтальный скролл. |
Пример использования:
div {
width: 200px;
border: 1px solid #000;
word-wrap: break-word;
}
В этом примере любое слово, длина которого превышает ширину блока 200px, будет автоматически перенесено. Для современных проектов рекомендуется использовать overflow-wrap: break-word;, так как это более современный и поддерживаемый стандарт.
Для контроля переноса длинных слов в таблицах или карточках рекомендуется комбинировать word-wrap: break-word с ограничением ширины контейнера и свойством hyphens: auto; для корректного деления слов.
Разница между word-break и overflow-wrap при работе с текстом

Свойства word-break и overflow-wrap управляют переносом текста в CSS, но делают это по-разному и в разных сценариях.
word-break:
- Определяет, где может происходить перенос слов внутри строки.
- Значение
normal– перенос только между словами или по дефису. - Значение
break-all– допускает разрыв слова в любом месте, что полезно для длинных URL или непрерывного текста без пробелов. - Значение
keep-all– запрещает перенос слов для азиатских языков и ограничивает разрывы обычных слов в латинском тексте. - Применяется, когда важно контролировать точное место разрыва слов, особенно для длинных непрерывных строк.
overflow-wrap (ранее word-wrap):
- Позволяет браузеру переносить слова только при необходимости, если текст превышает ширину контейнера.
- Значение
normal– стандартный перенос слов, не разрывает длинные слова. - Значение
break-word– разрывает слово, чтобы оно не выходило за границы блока, но делает это только при переполнении. - Идеально подходит для адаптивного дизайна, где текст должен оставаться внутри контейнера без горизонтальной прокрутки.
Рекомендации по использованию:
- Используйте
word-break: break-allдля длинных URL, технических кодов или непрерывного текста без пробелов. - Применяйте
overflow-wrap: break-wordдля текстовых блоков с адаптивной шириной, чтобы избежать горизонтального скролла. - Не комбинируйте
break-allиbreak-wordбез необходимости – это может привести к некрасивым разрывам слов. - Для большинства текстовых блоков с обычными словами достаточно
overflow-wrap: break-word.
Ключевое различие: word-break управляет правилами разрыва слов независимо от контейнера, а overflow-wrap реагирует на переполнение блока.
Создание разрыва строки с помощью псевдоэлемента ::after

Псевдоэлемент ::after позволяет добавлять содержимое после выбранного элемента без изменения HTML-разметки. Для создания разрыва строки используется свойство content с символом перевода строки "\A".
Пример CSS:
p::after {
content: "\A";
white-space: pre;
}
Здесь white-space: pre обеспечивает отображение перевода строки в браузере.
Важно учитывать, что ::after применим к элементам, поддерживающим блоковое или строчно-блочное отображение. Для строчных элементов перевод строки может не отображаться корректно, если не задать display: block или display: inline-block.
Можно комбинировать с другими стилями, например, для создания отступа перед новой строкой:
p::after {
content: "\A";
white-space: pre;
margin-left: 20px;
display: block;
}
Такой подход подходит для автоматического форматирования списков, цитат или блоков текста, где HTML-разметку менять нежелательно.
Псевдоэлемент ::after работает во всех современных браузерах, но для старых версий Internet Explorer может потребоваться дополнительная проверка совместимости.
Как вставить перенос строки с помощью тега и CSS
Для явного переноса текста в HTML используется тег <br>. Он завершает текущую строку и начинает новую без создания отдельного блока. Пример: Первая строка<br>Вторая строка выведет текст в две строки.
CSS позволяет управлять переносом строк внутри блоков. Свойство white-space задаёт поведение пробелов и переносов: white-space: pre; сохраняет все переносы и пробелы, а white-space: pre-wrap; позволяет переносить текст автоматически по границам блока и сохраняет ручные переносы.
Свойство word-break контролирует разрыв слов: word-break: break-word; позволяет переносить длинные слова, предотвращая горизонтальный скролл.
Для вставки переносов в определённых местах без использования <br> применяют псевдоэлемент ::after с контентом '\A' и стилем white-space: pre;. Пример: p::after { content: '\A'; white-space: pre; } создаёт перенос после содержимого параграфа.
Использование <br> целесообразно для отдельных строк текста, а CSS-свойства white-space и word-break эффективны для динамических блоков и адаптивного контента.
Управление переносами в Flex и Grid контейнерах
В Flex-контейнерах для переноса элементов используется свойство flex-wrap. Значение nowrap запрещает перенос, wrap разрешает перенос на новую строку, wrap-reverse инвертирует порядок строк. Для контроля разрыва текста внутри элемента применяется word-break с значениями break-word или break-all, чтобы длинные слова корректно переносились без горизонтального скролла.
В Grid-контейнерах перенос элементов управляется через свойства grid-auto-flow и grid-template-rows. Значение row размещает элементы построчно, column – по колонкам. Автоматический перенос обеспечивается комбинацией grid-auto-rows: minmax(0, auto) и grid-auto-flow: row, что позволяет строкам расширяться по содержимому, не создавая пустых областей.
Для обеих моделей важна установка overflow-wrap: break-word на текстовых блоках внутри контейнера. Это предотвращает вылезание текста за границы контейнера при ограниченной ширине. В Flex-контейнерах рекомендуется использовать min-width и max-width для дочерних элементов, чтобы переноса происходил предсказуемо и не ломал макет.
Grid позволяет задать явное управление переносом через grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)), что автоматически переносит элементы на новые строки при недостатке места. Аналогично, flex-basis в Flex-контейнерах устанавливает базовую ширину элемента, влияя на момент переноса.
Использование медиазапросов (@media) совместно с Flex и Grid позволяет динамически регулировать переносы при изменении размеров экрана, минимизируя горизонтальную прокрутку и обеспечивая адаптивность макета. Это особенно важно для длинных предложений и контента с переменной шириной.
Настройка переноса текста внутри заголовков и кнопок

Для управления переносом текста внутри заголовков (<h1>-<h6>) и кнопок (<button>) применяются свойства CSS word-wrap, overflow-wrap и white-space. Их правильная комбинация обеспечивает читаемость и адаптивность интерфейса.
- word-wrap / overflow-wrap: разрешает разрыв длинных слов, предотвращая выход текста за пределы контейнера. Рекомендуется использовать
overflow-wrap: break-word;для заголовков с длинными терминами или ссылками. - white-space: контролирует обработку пробелов и перенос строк. Значение
normalпозволяет автоматический перенос,nowrapзапрещает его,pre-wrapсохраняет пробелы и переносит строки по границам блока. - hyphens: включение переносов по слогам:
hyphens: auto;позволяет браузеру ставить переносы в длинных словах, что особенно важно для заголовков на узких экранах.
Для кнопок рекомендуется:
- Ограничивать ширину через
max-widthилиwidthи разрешать перенос сwhite-space: normal;. - Использовать
overflow-wrap: break-word;для длинных лейблов или динамического текста. - При необходимости добавлять
text-align: center;для сохранения визуальной симметрии при переносе.
Пример для заголовка с длинным словом:
h2 {
overflow-wrap: break-word;
white-space: normal;
hyphens: auto;
}
Пример для кнопки с ограниченной шириной:
button {
max-width: 200px;
white-space: normal;
overflow-wrap: break-word;
text-align: center;
}
Эти настройки обеспечивают перенос текста без нарушения дизайна, делают интерфейс адаптивным и сохраняют читаемость на любых устройствах.
Как предотвратить перенос строки с помощью nowrap
Свойство CSS white-space управляет поведением текста при переносе. Значение nowrap запрещает автоматический перенос строк, оставляя весь текст в одной линии. Применение: white-space: nowrap;.
Эффект nowrap особенно полезен для меню, кнопок и заголовков, где разрыв строки нарушает дизайн. Текст с длинными словами или ссылками останется в одной строке, но контейнер может выйти за пределы родительского блока. В таких случаях рекомендуется использовать свойства overflow: hidden;, text-overflow: ellipsis; и max-width для контроля переполнения.
Пример использования:
.menu-item {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 200px;
}
Этот код сохраняет текст в одну строку, обрезает лишнее и добавляет многоточие, если ширина превышена.
Для inline-элементов, таких как span, nowrap предотвращает разрыв текста даже при наличии пробелов. Для блоков div результат идентичен, но стоит контролировать ширину контейнера, чтобы избежать горизонтального скролла.
Важно: nowrap игнорирует <br>, поэтому принудительные переносы нужно вставлять через CSS или отдельные элементы.
Вопрос-ответ:
Как сделать перенос текста на новую строку в CSS?
Для переноса текста на новую строку в CSS можно использовать свойство word-wrap или overflow-wrap. Например, overflow-wrap: break-word; позволяет переносить длинные слова на следующую строку, если они не помещаются в контейнер. Также перенос можно организовать с помощью white-space, задавая значение normal или pre-wrap для сохранения пробелов и переносов.
Можно ли заставить текст переноситься только после определённых символов?
Да, для этого используют свойство word-break или специальные теги с классами в HTML. Например, word-break: break-all; разрешает перенос слова на любой позиции, а word-break: keep-all; запрещает перенос внутри слов. Также можно использовать тег <wbr> в HTML, чтобы указать допустимое место для переноса.
Как перенести текст на новую строку без разрыва слов?
Чтобы текст переносился на следующую строку только между словами, не разрывая их, используют свойство white-space: normal;. Это значение позволяет браузеру автоматически переносить слова, когда они не помещаются в ширину контейнера. Если контейнер слишком узкий для слова, оно будет переноситься целиком на следующую строку.
Можно ли управлять переносом строк для длинных ссылок или кода в CSS?
Да, длинные строки с ссылками или кодом можно переносить с помощью overflow-wrap: break-word; или word-break: break-all;. Первый вариант сохраняет структуру слов и переносит только при необходимости, второй — разрешает разрыв строки в любом месте. Также полезно задать max-width для контейнера, чтобы браузер знал, где нужно осуществлять перенос.
Как сделать так, чтобы перенос строки учитывал пробелы и отступы?
Свойство white-space позволяет контролировать, как браузер обрабатывает пробелы и переносы. Значение pre-wrap сохраняет все пробелы и переносы, но при необходимости переносит текст на новую строку, если он не помещается в контейнер. Это удобно для текста, где форматирование важно, например, для стихов или кода.
Как перенести текст на новую строку с помощью CSS без использования `
`?
В CSS для переноса текста на новую строку можно использовать свойство white-space. Например, значение pre-line позволяет сохранять переносы строк, добавленные в HTML, и автоматически переносить текст по ширине блока. Также можно применить word-wrap: break-word; или overflow-wrap: break-word;, если необходимо разрывать длинные слова, чтобы они не выходили за границы контейнера.
Можно ли сделать так, чтобы определённая часть текста всегда начиналась с новой строки?
Да, для этого в CSS удобно использовать свойство display с значением block для нужного элемента. Например, если текст обёрнут в тег ``, можно задать ему display: block;, и браузер автоматически перенесёт этот блок на новую строку. Альтернативой служит ::before с контентом и символом переноса строки через \A в сочетании с white-space: pre;, что позволяет вставлять разрывы строк в нужных местах без изменения структуры HTML.
