В ЦСС есть два подхода к управлению переносом слов: механический и «эстетический». В первом случае мы просим браузер механически перенести слово ровно на той букве, где слово перестало влезать в строку. Во втором случае мы автоматически или вручную расставляем в словах мягкие переносы, чтобы браузер аккуратно перенёс по ним слова, используя дефисы.

Механический перенос слов

Чтобы механически переносить длинные слова или ссылки, вылезающие за полосу набора, используют устаревающее свойство word-break или современное overflow-wrap:

Самое длинное существительное без дефиса — водогрязеторфопарафинолечение. А по сути — это просто лечение грязью, торфом и парафином.

Самое длинное существительное без дефиса — водогрязеторфопарафинолечение. А по сути — это просто лечение грязью, торфом и парафином.

word-break: break-all переносит каждое слово, а overflow-wrap: break-word переносит только слова, не влезающие в строку

Чтобы подсказать браузеру, где лучше переносить слова, используют тег <wbr>. Если же перенос наоборот нужно запретить, например, в имени и фамилии, используют неразрывные пробелы и дефисы или заклинание white-space: nowrap:

<p>
  https://this<wbr>.is<wbr>
  .a<wbr>.really<wbr>.really<wbr>
  .long<wbr>.website<wbr>
  .name/with<wbr>/deeper<wbr>/pages
</p>
<p>
  Михаил <span style="white-space: nowrap">Салтыков-Щедрин</span>
</p>

https://this.is.a.really.really.long.website.name/with/deeper/pages

Михаил Салтыков‑Щедрин

Эстетический перенос слов

Чтобы аккуратно переносить слова с помощью дефисов, используют свойство hyphens с ключевыми словами manual (переносить только там, где сказано) и auto (переносить автоматически).

Важный момент: автоматические переносы основаны на словарях и правилах деления слов на слоги, поэтому без указания языка документа (<html lang="ru">) переносы не работают.

Встроенный автоматический перенос слов браузером даёт непредсказуемый и не всегда удачный результат, который отличается от браузера к браузеру, поэтому обычно используют hyphens: manual с «подсказками»:

hyphens: auto

Самое длинное существительное без дефиса — водогрязеторфопарафинолечение. А по сути — это просто лечение грязью, торфом или парафином.

Кофеварка и соковыжималка прекрасны.

hyphens: manual

Самое длинное суще­стви­тель­ное без дефиса — водо­грязе­торфо­парафино­лечение. А по сути — это просто лечение грязью, торфом или парафином.

Кофе­варка и соко­выжи­мал­ка прекрасны.

Автоматические переносы не понимают, что «водо­грязе­торфо­парафино­лечение» и «соковыжималку» лучше разбивать с учётом морфологии, а не по отдельным слогам. См. правила переносов

Чтобы подсказать браузеру, где лучше перенести слово, используют невидимые мягкие переносы (&shy;). Их расставляют в тексте вручную или с помощью готовых библиотек и программ:

<p>
  Самое длинное суще&shy;стви&shy;тель&shy;ное
  без дефиса – водо&shy;грязе&shy;торфо&shy;парафино&shy;лечение.
</p>

Если уже расставленные переносы нужно запретить, например, при переходе от мобильной версии к лаптопной или горизонтальной, достаточно hyphens: none.

P. S. Слова с дефисом браузеры могут автоматически переносить по дефису. Чаще всего такие переносы — зло, потому что мешают читать и воспринимать слово целиком: 22‑й, Поток‑2, 555‑33‑92 или военно‑морской. В таких случаях стоит заменять обычный дефис на неразрывный ‑.

P. P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.

Веб‑разработка
Отправить
Поделиться
Запинить

Рекомендуем другие советы