Гид по технологиям

Как переносить длинные слова на новую строку с помощью CSS

• 5 min read • Веб-разработка • Обновлено 18 Nov 2025
Перенос длинных слов в CSS — overflow-wrap и другие
Перенос длинных слов в CSS — overflow-wrap и другие

Редактор кода с CSS-кодом

Длинные строки могут «выпирать» за пределы контейнеров и ломать структуру DOM. Браузеры по умолчанию не разрывают неразрывные строки, поэтому нужно явно задать правило переноса. Это улучшит читаемость, адаптивность и устойчивость макета при любых входных данных от пользователя.

Как работает перенос текста в CSS

Браузеры управляют переносом слов с помощью нескольких CSS-свойств. Основные из них:

  • overflow-wrap (рекомендуется) — указывает, что строка может быть перенесена внутри слова, если это необходимо.
  • word-wrap — исторический алиас для overflow-wrap, по-прежнему работает.
  • word-break — управляет тем, где можно разрывать слова; полезно для алфавитов без пробелов (китайский, японский), или когда нужно более агрессивное поведение.
  • hyphens — управляет автоматическим переносом с дефисами в поддерживаемых языках.

Коротко: чаще всего достаточно overflow-wrap: break-word; для большинства задач. Для особых случаев добавляют word-break или hyphens.

Свойства и их поведение

  • break-word: фактическое значение, которое говорит браузеру разрешать перенос внутри слова.
  • normal: обычное поведение — перенос в точках разделения (пробелы, дефисы), не разрывает длинные непрерывные строки.
  • initial / inherit: стандартные служебные значения; не решают проблему, если родитель не настроен на перенос.

Важно: word-wrap — устаревший термин, но по-прежнему поддерживается как синоним overflow-wrap. Для современных решений ориентируйтесь на overflow-wrap.

Пример: перенос в контейнере

Исходный случай: длинный заголовок или строка URL выходит за границы блока.

Веб-страница с div-контейнером и длинным h2-текстом

Правильный HTML и CSS для простого контейнера:

HTML:

This-div-contains-the-long-h2-lorem-text-demonstrated-in-the-image-above

CSS (рекомендуемое):

.wrap-it {
  overflow-wrap: break-word; /* современное, предпочтительное */
  word-wrap: break-word;     /* для обратной совместимости */
  hyphens: auto;             /* позволяет браузеру ставить дефисы при доступности словарей */
}

Альтернативно, более агрессивный вариант (внимание: может ломать чтение для некоторых языков):

.wrap-it-aggressive {
  word-break: break-all; /* разрывает слово в любом месте при необходимости */
}

После применения overflow-wrap текст аккуратно переносится на новую строку и макет остаётся целым:

Веб-страница с div-контейнером и заголовком, перенесённым на новую строку

Когда какой метод использовать

  • overflow-wrap: break-word — стандартный выбор для блоков с контентом, где важно не ломать макет.
  • word-break: break-all — когда у вас тексты без пробелов (CJK) или вы готовы к радикальным разрывам внутри слов.
  • hyphens: auto — когда нужно красивое автоматическое перенесение с дефисами (проверяйте поддержку словарей локали).

Important: сочетайте свойства осторожно. Например, для заданий в разных языках можно включать hyphens только для тех блоков, где язык известен.

Советы по совместимости и лучшие практики

  • Всегда добавляйте и overflow-wrap, и word-wrap для покрытия старых браузеров.
  • Не ставьте word-break: break-all глобально — это может ухудшить читаемость.
  • Для ссылок используйте CSS-правило, чтобы длинные URL не ломали строку:
a {
  overflow-wrap: anywhere; /* позволяет переносить в удобных местах */
}
  • Проверяйте поведение на мобильных устройствах и в реальных данных (подставные длинные слова, ссылки из пользовательского контента).

Когда перенос не сработает и обходные решения

  • Если элемент имеет white-space: nowrap или display: inline-block без возможности переноса, перенос не произойдёт — снимите nowrap или измените display.
  • В таблицах () длинные слова могут влиять на ширину столбцов; используйте table-layout: fixed и добавьте перенос в ячейках.
  • В некоторых случаях можно сокращать строки с помощью CSS-ellipsis (text-overflow: ellipsis) при желании не показывать часть текста.
  • Проверки и критерии приёмки

    Критерии приёмки для компонента с переносом текста:

    • Длинный непрерывный текст не выходит за границы родительского контейнера на всех ширинах экрана.
    • Читаемость не ухудшается: дефисы и разрывы логичны для локали.
    • Функциональные тесты: вставка ссылок длиной ≈200 символов не ломает макет.

    Тестовые случаи:

    • Вставить длинный URL в блок и проверить перенос на 320/768/1366 px.
    • Проверить поведение для текста на русском и английском с hyphens: auto.
    • Проверить таблицы с table-layout: fixed и длинными словами в ячейках.

    Роль-based чек-лист (разработчик / дизайнер / контент-менеджер)

    • Разработчик:
      • Внедрить overflow-wrap: break-word; для текстовых контейнеров.
      • Добавить unit-тесты/вьюпорт-тесты с длинными строками.
    • Дизайнер:
      • Проверить визуальные переносы и дефисы по локали.
      • Решить, когда использовать ellipsis вместо переноса.
    • Контент-менеджер:
      • Следить за длинными ссылками в пользовательском контенте.
      • При возможности разделять длинные фразы с пробелами или сущностями.

    Альтернативные подходы

    • JavaScript-разбиение: при сложных паттернах можно программно вставлять невидимые пробелы или soft-hyphen (­) в нужные места. Это даёт контроль, но усложняет поддержку.
    • Плагин для URL-shortening на стороне сервера — если длинные ссылки часто поступают извне.

    Короткая методология внедрения (SOP)

    1. Определить компоненты, где ломается макет при длинных строках.
    2. Добавить overflow-wrap: break-word; и проверить в браузерах.
    3. При необходимости добавить hyphens для локализованного контента.
    4. Покрыть тестами (ручными и автоматическими) и провести код-ревью.

    Риски и mitigations

    • Риск: агрессивный перенос ухудшает чтение. Mitigation: использовать hyphens и ограничивать применение word-break.
    • Риск: различное поведение в браузерах. Mitigation: использовать оба свойства (overflow-wrap и word-wrap) и тестировать.

    Быстрая сводка для команд

    • Используйте overflow-wrap: break-word как основное решение.
    • Добавляйте hyphens: auto для локализованного контента при поддержке словарей.
    • Применяйте word-break только в крайних случаях.

    Summary:

    • Перенос длинных слов защищает макет и улучшает UX.
    • overflow-wrap — современное и безопасное решение.
    • Тестируйте в масштабах проекта и учитывайте локаль.

    Ключевые ресурсы и дальнейшие шаги: примените правило к проблемным секциям, запустите визуальные тесты и добавьте соответствующие автоматические проверки в CI.

    Поделиться: X/Twitter Facebook LinkedIn Telegram
    Автор
    Редакция

    Похожие материалы

    Несколько аккаунтов Skype: Multi Skype Launcher
    Программное обеспечение

    Несколько аккаунтов Skype: Multi Skype Launcher

    Журнал для работы: повысить продуктивность
    Productivity

    Журнал для работы: повысить продуктивность

    Персональные звуки уведомлений на Android
    Android.

    Персональные звуки уведомлений на Android

    Скачивание шоу Hulu для офлайн‑просмотра
    Стриминг

    Скачивание шоу Hulu для офлайн‑просмотра

    Microsoft Start: персонализированная новостная лента
    Новости

    Microsoft Start: персонализированная новостная лента

    Как изменить имя в Epic Games быстро
    Гайды

    Как изменить имя в Epic Games быстро