.png)
В этой статье разбираются все способы предотвращения выхода текста за границы HTML-блока.
Мы рассмотрим CSS-свойства overflow, text-overflow, word-wrap, hyphens
и мультистрочное сокращение с -webkit-line-clamp
, а также их поддержку в браузерах.
Закроем такие вопросы:
- Текст не выходит за границы блока
- Обрезать текст css
- Многоточие в css
- Перенос длинных слов
text-overflow ellipsis
- Многострочное сокращение текста
css overflow hidden
word-wrap break-word
Почему текст выходит за границы блока?
Текст может выходить за пределы блока по нескольким причинам:
- Слишком длинное слово без пробелов (например, URL).
- У блока фиксированная ширина, а текст не переносится.
- Используется
white-space: nowrap
, но нет обработки переполнения.
Чтобы это исправить, применяются CSS-свойства, контролирующие переполнение и перенос текста.
Основные способы ограничить текст в границах блока
Обрезка текста с overflow: hidden
Самый простой способ — просто скрыть часть текста, выходящую за границы.
[code lang="CSS"] .block { overflow: hidden; }[/code]Плюсы:
- Простота реализации.
- Работает во всех браузерах.
Минусы:
- Текст обрезается резко, без индикации (нет ...).
Добавление многоточия (text-overflow: ellipsis
)
Если нужно показать, что текст обрезан, используется text-overflow: ellipsis
.
Обязательные условия:
white-space: nowrap
(запрет переноса строк).overflow: hidden
.
Пример:
[code lang="HTML"] [/code]Результат:
Поддержка браузерами:
- Работает везде, включая IE6+.
Перенос длинных слов (word-wrap, overflow-wrap
)
Если текст содержит длинные слова (например, ссылки), они могут вылезать за границы.
Решение:
[code lang="CSS"].block { word-wrap: break-word; /* старый вариант */ overflow-wrap: break-word; /* современный вариант */ } [/code]Разница между word-wrap
и overflow-wrap
:
word-wrap
— устаревшее, но работает везде.overflow-wrap
— новый стандарт (предпочтительно).
Пример:
[code lang="HTML"]Результат:
Многострочное сокращение с -webkit-line-clamp
Если нужно ограничить текст в несколько строк и добавить ... в конце:
[code lang="CSS"].block { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; /* Макс. число строк */ overflow: hidden; }[/code]Пример:
[code lang="HTML"] [/code]Результат:
Поддержка:
- Работает во всех современных браузерах, кроме IE.
Что делать, если ничего не помогло?
Если текст всё равно вылезает:
- Проверьте, нет ли
white-space: nowrap
безoverflow: hidden
. - Убедитесь, что у блока задана
width
илиmax-width
. - Если используется Flexbox/Grid, проверьте
min-width: 0
у дочернего элемента.
Итог: какой способ выбрать?
Способ | Когда использовать | Поддержка браузерами |
---|---|---|
overflow: hidden |
Простая обрезка без ... |
Все браузеры |
text-overflow: ellipsis |
Однострочный текст с ... |
Все браузеры |
word-wrap: break-word |
Длинные слова (URL) | Все браузеры |
hyphens: auto |
Автопереносы (как в Word) | Firefox, Safari |
-webkit-line-clamp |
Многострочное сокращение | Все, кроме IE |
Заключение
Теперь вы знаете все способы контроля переполнения текста в блоках. Выбирайте подходящий вариант в зависимости от задачи и поддержки браузерами.