hyphens
Определение и применение
Свойство hyphens разрешает или запрещает перенос слов по частям с обозначением переноса. Оно полезно для
узких текстовых колонок, где длинные слова оставляют большие пустоты или выходят за границу.
Как настроить переносы длинных слов — в уроке «Форматирование текста в CSS».
Попробуйте значения hyphens
В слове с мягким переносом manual разрешает разрыв в заданной точке. auto использует словарь языка; наличие словаря зависит от браузера и системы.
hyphens: none
HTML и CSS примера
<div class="stage">
<p class="demo-target" lang="ru">
Слово электро­станция содержит мягкий перенос.
</p>
</div>
<div class="stage">
<p class="demo-target" lang="ru">
Электростанция обеспечивает электричеством расположенные поблизости
предприятия.
</p>
</div>
<div class="stage">
<p class="demo-target" lang="en">
International communication requires understandable information.
</p>
</div>
* {
box-sizing: border-box;
}
.stage {
width: 100%;
max-width: 340px;
padding: 16px;
background: white;
color: #172c3d;
font: 16px/1.5 system-ui;
}
.stage {
overflow: auto;
}
.demo-target {
width: 150px;
margin: 0;
font-size: 18px;
hyphens: none;
}
* {
box-sizing: border-box;
}
.stage {
width: 100%;
max-width: 340px;
padding: 16px;
background: white;
color: #172c3d;
font: 16px/1.5 system-ui;
}
.stage {
overflow: auto;
}
.demo-target {
width: 150px;
margin: 0;
font-size: 18px;
hyphens: manual;
}
* {
box-sizing: border-box;
}
.stage {
width: 100%;
max-width: 340px;
padding: 16px;
background: white;
color: #172c3d;
font: 16px/1.5 system-ui;
}
.stage {
overflow: auto;
}
.demo-target {
width: 150px;
margin: 0;
font-size: 18px;
hyphens: auto;
}
Поддержка браузерами
Спецификация: CSS text
Поддерживается во всех основных браузерах с 2023 года.
Поддержка автоматических переносов зависит от языка и наличия словаря.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
hyphens | 55 Версия 55 выпущена в 2016 г. Версия 13 выпущена в 2011 г. — Префикс -webkit- | 79 Версия 79 выпущена в 2020 г. Версия 79 выпущена в 2020 г. — Префикс -webkit- Версия 12 выпущена в 2015 г. — Удалено в 79; Префикс -ms-; Частичная поддержка Примечание MDN (англ.) Only works if the specified language is the same as the language of the underlying OS. | 43 Версия 43 выпущена в 2015 г. Версия 6 выпущена в 2011 г. — Префикс -moz- | 42 Версия 42 выпущена в 2016 г. Версия 15 выпущена в 2013 г. — Префикс -webkit- | 17 Версия 17 выпущена в 2023 г. Версия 5.1 выпущена в 2011 г. — Префикс -webkit- | 55 Версия 55 выпущена в 2016 г. Версия 18 выпущена в 2012 г. — Префикс -webkit- | 43 Версия 43 выпущена в 2015 г. Версия 6 выпущена в 2011 г. — Префикс -moz- | 42 Версия 42 выпущена в 2017 г. Версия 14 выпущена в 2013 г. — Префикс -webkit- | 17 Версия 17 выпущена в 2023 г. Версия 4.2 выпущена в 2010 г. — Префикс -webkit- | 6.0 Версия 6.0 выпущена в 2017 г. Версия 1.0 выпущена в 2013 г. — Префикс -webkit- | 55 Версия 55 выпущена в 2016 г. Версия 4.4 выпущена в 2013 г. — Префикс -webkit- | 17 Версия 17 выпущена в 2023 г. Версия 4.2 выпущена в 2010 г. — Префикс -webkit- |
auto | 88 Версия 88 выпущена в 2021 г. Версия 55 выпущена в 2016 г. — Удалено в 88; Частичная поддержка Примечание MDN (англ.) Only supported on macOS. | 88 Версия 88 выпущена в 2021 г. Версия 79 выпущена в 2020 г. — Удалено в 88; Частичная поддержка Примечание MDN (англ.) Only supported on macOS. | 6 | 74 Версия 74 выпущена в 2021 г. Версия 42 выпущена в 2016 г. — Удалено в 74; Частичная поддержка Примечание MDN (англ.) Only supported on macOS. | 5.1 | 55 | 6 | 42 | 4.2 | 6.0 | 55 | 4.2 |
| Hyphenation dictionary for Afrikaans (af, af-*) | 112 | 112 | 8 | 98 | 112 | 8 | 75 | 23.0 | 112 | |||
| Hyphenation dictionary for Albanian (sq, sq-*) | 112 | 112 | 98 | 112 | 75 | 23.0 | 112 | |||||
| Hyphenation dictionary for Ahmaric (am, am-*) | 112 | 112 | 98 | 112 | 75 | 23.0 | 112 | |||||
| Hyphenation dictionary for Armenian (hy, hy-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Assamese (as, as-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Basque (be, be-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Belarusian (be, be-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Bengali (bn, bn-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Bosnian, Serbian, and Serbo-Croatian (sh, sh-*, sr, sr-*, bs, bs-*) | 8 | 8 | ||||||||||
| Hyphenation dictionary for Bulgarian (bg, bg-*) | 87 | 87 | 8 | 73 | 87 | 8 | 62 | 14.0 | 87 | |||
| Hyphenation dictionary for Catalan (ca, ca-*) | 8 | 5.1 | 8 | 5 | 5 | |||||||
| Hyphenation dictionary for Croatian (hr, hr-*) | 87 | 87 | 8 | 73 | 9.1 | 87 | 8 | 62 | 9.3 | 14.0 | 87 | 9.3 |
| Hyphenation dictionary for Mongolian (Cyrillic) (mn-cyrl, mn-cyrl-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Czech (cs, cs-*) | 112 | 112 | 130 | 98 | 9.1 | 112 | 130 | 75 | 9.3 | 23.0 | 112 | 9.3 |
| Hyphenation dictionary for Danish (da, da-*) | 87 | 87 | 8 | 73 | 5.1 | 87 | 8 | 62 | 5 | 14.0 | 87 | 5 |
| Hyphenation dictionary for Dutch (nl, nl-*) | 112 | 112 | 8 | 98 | 5.1 | 112 | 8 | 75 | 5 | 23.0 | 112 | 5 |
| Словарь английского языка | 55 | 12 | 6 Версия 6 выпущена в 2011 г. Примечание MDN (англ.) For English, Firefox uses an en-US dictionary | 44 | 5.1 Версия 5.1 выпущена в 2011 г. Примечание MDN (англ.) For English, Safari uses different en-GB and en-US dictionaries. | 55 | 6 Версия 6 выпущена в 2011 г. Примечание MDN (англ.) For English, Firefox for Android uses an en-US dictionary | 43 | 5 Версия 5 выпущена в 2011 г. Примечание MDN (англ.) For English, Safari on iOS uses different en-GB and en-US dictionaries. | 6.0 | 55 | 5 Версия 5 выпущена в 2011 г. Примечание MDN (англ.) For English, WebView on iOS uses different en-GB and en-US dictionaries. |
| Hyphenation dictionary for Esperanto (eo, eo-*) | 8 | 8 | ||||||||||
| Hyphenation dictionary for Estonian (et, et-*) | 87 | 87 | 8 | 73 | 87 | 8 | 62 | 14.0 | 87 | |||
| Hyphenation dictionary for Ethiopic script (mul-ethi, mul-ethi-*) | 112 | 112 | 98 | 112 | 75 | 23.0 | 112 | |||||
| Hyphenation dictionary for Ethiopic script (und-ethi, und-ethi-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Finnish (fi, fi-*) | 8 | 9.1 | 8 | 9.3 | 9.3 | |||||||
| Hyphenation dictionary for French (fr, fr-*) | 87 | 87 | 8 | 73 | 5.1 | 87 | 8 | 62 | 5 | 14.0 | 87 | 5 |
| Hyphenation dictionary for Galician (gl, gl-*) | 112 | 112 | 9 | 98 | 112 | 9 | 75 | 23.0 | 112 | |||
| Hyphenation dictionary for Georgian (ka, ka-*) | 112 | 112 | 98 | 112 | 75 | 23.0 | 112 | |||||
| Hyphenation dictionary for German, Reformed Orthography of 1996 (de, de-1996, de-DE, de-AT, de-*) | 87 | 87 | 8 | 73 | 5.1 | 87 | 8 | 62 | 5 | 14.0 | 87 | 5 |
| Hyphenation dictionary for German, Swiss Orthography (de-CH, de-CH-*) | 87 | 87 | 8 | 73 | 87 | 8 | 62 | 14.0 | 87 | |||
| Hyphenation dictionary for German, Traditional Orthography of 1901 (de-1901, de-AT-1901, de-DE-1901) | 87 | 87 | 8 | 73 | 87 | 8 | 62 | 14.0 | 87 | |||
| Hyphenation dictionary for Gujarati (gu, gu-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Hindi (hi, hi-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Hungarian (hu, hu-*) | 87 | 87 | 9 | 73 | 9.1 | 87 | 9 | 62 | 9.3 | 14.0 | 87 | 9.3 |
| Hyphenation dictionary for Icelandic (is, is-*) | 8 | 8 | ||||||||||
| Hyphenation dictionary for Interlingua (ia, ia-*) | 8 | 8 | ||||||||||
| Hyphenation dictionary for Irish (ga, ga-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Italian (it, it-*) | 112 | 112 | 9 | 98 | 5.1 | 112 | 9 | 75 | 5 | 23.0 | 112 | 5 |
| Hyphenation dictionary for Kannada (kn, kn-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Kurmanji (kmr, kmr-*) | 8 | 8 | ||||||||||
| Hyphenation dictionary for Latin (la, la-*) | 87 | 87 | 8 | 73 | 87 | 8 | 62 | 14.0 | 87 | |||
| Hyphenation dictionary for Latvian (lv, lv-*) | 112 | 112 | 98 | 112 | 75 | 23.0 | 112 | |||||
| Hyphenation dictionary for Lithuanian (lt, lt-*) | 112 | 112 | 8 | 98 | 112 | 8 | 75 | 23.0 | 112 | |||
| Hyphenation dictionary for Malayalam (ml, ml-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Marathi (mr, mr-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Modern Greek (el, el-*) | 112 | 112 | 98 | 112 | 75 | 23.0 | 112 | |||||
| Hyphenation dictionary for Mongolian (mn, mn-*) | 8 | 8 | ||||||||||
| Hyphenation dictionary for Norwegian (Nynorsk) (nn, nn-*) | 87 | 87 | 8 | 73 | 87 | 8 | 62 | 5 | 14.0 | 87 | 5 | |
| Hyphenation dictionary for Norwegian (Bokmål) (no, no-*, nb, nb-*) | 87 | 87 | 8 | 73 | 5.1 | 87 | 8 | 62 | 5 | 14.0 | 87 | 5 |
| Hyphenation dictionary for Old Slavonic (cu, cu-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Oriya (or, or-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Polish (pl, pl-*) | 31 | 9.1 | 31 | 9.3 | 9.3 | |||||||
| Hyphenation dictionary for Portuguese (pt, pt-*) | 87 | 87 | 8 | 73 | 9.1 | 87 | 8 | 62 | 9.3 | 14.0 | 87 | 9.3 |
| Hyphenation dictionary for Punjabi/Panjabi (pa, pa-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Словарь русского языка | 112 | 112 | 8 | 98 | 5.1 | 112 | 8 | 75 | 5 | 23.0 | 112 | 5 |
| Hyphenation dictionary for Slovak (sk, sk-*) | 112 | 112 | 130 | 98 | 112 | 130 | 75 | 23.0 | 112 | |||
| Hyphenation dictionary for Slovenian (sl, sl-*) | 87 | 87 | 8 | 73 | 87 | 8 | 62 | 14.0 | 87 | |||
| Hyphenation dictionary for Spanish (es, es-*) | 87 | 87 | 8 | 73 | 5.1 | 87 | 8 | 62 | 5 | 14.0 | 87 | 5 |
| Hyphenation dictionary for Swedish (sv, sv-*) | 112 | 112 | 8 | 98 | 5.1 | 112 | 8 | 75 | 5 | 23.0 | 112 | 5 |
| Hyphenation dictionary for Tamil (ta, ta-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Telugu (te, te-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Turkish (tr, tr-*) | 9 | 5.1 | 9 | 5 | 5 | |||||||
| Hyphenation dictionary for Turkmen (tk, tk-*) | 87 | 87 | 73 | 87 | 62 | 14.0 | 87 | |||||
| Hyphenation dictionary for Ukrainian (uk, uk-*) | 112 | 112 | 9 | 98 | 9.1 | 112 | 9 | 75 | 9.3 | 23.0 | 112 | 9.3 |
| Hyphenation dictionary for Upper Sorbian (hsb, hsb-*) | 8 | 8 | ||||||||||
| Hyphenation dictionary for Welsh (cy, cy-*) | 87 | 87 | 8 | 73 | 87 | 8 | 62 | 14.0 | 87 | |||
manual | 88 Версия 88 выпущена в 2021 г. Версия 55 выпущена в 2016 г. — Удалено в 88; Частичная поддержка Примечание MDN (англ.) Only supported on macOS. | 88 Версия 88 выпущена в 2021 г. Версия 79 выпущена в 2020 г. — Удалено в 88; Частичная поддержка Примечание MDN (англ.) Only supported on macOS. | 6 | 74 Версия 74 выпущена в 2021 г. Версия 42 выпущена в 2016 г. — Удалено в 74; Частичная поддержка Примечание MDN (англ.) Only supported on macOS. | 5.1 | 55 | 6 | 42 | 4.2 | 6.0 | 55 | 4.2 |
none | 88 Версия 88 выпущена в 2021 г. Версия 55 выпущена в 2016 г. — Удалено в 88; Частичная поддержка Примечание MDN (англ.) Only supported on macOS. | 88 Версия 88 выпущена в 2021 г. Версия 79 выпущена в 2020 г. — Удалено в 88; Частичная поддержка Примечание MDN (англ.) Only supported on macOS. | 6 | 74 Версия 74 выпущена в 2021 г. Версия 42 выпущена в 2016 г. — Удалено в 74; Частичная поддержка Примечание MDN (англ.) Only supported on macOS. | 5.1 | 55 | 6 | 42 | 4.2 | 6.0 | 55 | 4.2 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
Автоматические переносы зависят от языка и словарей. В старых версиях Safari нужен -webkit-hyphens; в
новых используйте стандартное свойство.
CSS синтаксис:
hyphens: none | manual | auto;
/* Глобальные значения */
hyphens: initial | inherit | unset | revert | revert-layer;| разделяет варианты.
JavaScript синтаксис:
element.style.hyphens = "auto";Начальное значение свойства
manual.
Значения свойства
| Значение | Описание |
|---|---|
none |
Не разрешает перенос слова по точкам переноса, даже если в тексте есть мягкий перенос. Обычные переносы между словами остаются. |
manual |
Разрешает перенос в местах, явно отмеченных в тексте, например мягким переносом ­.
Самостоятельно словарь не выбирает точки. Начальное значение.
|
auto |
Разрешает автоматический выбор точек по языковым правилам, если у браузера есть нужный словарь. Явные подсказки в тексте также учитываются. |
initial
|
Устанавливает начальное значение свойства. |
inherit
|
Наследует вычисленное значение свойства у родительского элемента. |
unset
|
Для наследуемого свойства hyphens наследует вычисленное значение у родительского элемента. |
revert
|
Отменяет заданное в коде значение свойства для этого элемента: применяются пользовательские или стандартные стили браузера. Если они не задают значение, свойство наследуется или получает начальное значение по обычным правилам. Не возвращает значение из предыдущей строки CSS. |
revert-layer
|
Сбрасывает значение свойства для текущего слоя каскада @layer. Применяется значение из другого слоя
по правилам каскада; если подходящего значения нет, возможен откат к стилям пользователя или браузера.
|
Язык и словарь
Укажите язык разметки через lang, например <p lang="ru">. Одного кириллического текста
недостаточно для надёжного выбора словаря. Точки переноса могут различаться между операционными системами и
браузерами; наличие поддержки свойства не гарантирует наличие словаря для каждого языка.
Мягкий перенос ­ обычно не виден, пока слово не переносится в указанном месте. Обычный дефис —
видимый символ текста, его не стоит вставлять вместо мягкого переноса. Для длинного URL или непрерывного
идентификатора полезнее overflow-wrap: anywhere: это аварийное разбиение, а не языковой перенос слова.
word-break: break-all может разбивать текст без ожидаемых дефисов.
Спецификация
Наследуется
Да.
Анимируемое
Тип анимации — дискретный: значение переключается без плавных промежуточных положений.
Примеры, попробуйте сами
Перенос длинного слова
Сузьте абзацы. Первый содержит явный мягкий перенос, второй использует русский словарь. Переключайте auto, manual и none; автоматический результат зависит от браузера.
base.css
body {
margin: 1rem;
font:
16px/1.5 system-ui,
sans-serif;
color: #243342;
background: #fff;
}
* {
box-sizing: border-box;
}
p {
max-width: 12rem;
border: 1px solid #64748b;
padding: 8px;
}
index.html
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Перенос длинного слова</title>
</head>
<body>
<p class="manual" lang="ru">Электро­станция находится за лесом.</p>
<p class="automatic" lang="ru">Путешественники фотографировали достопримечательности заповедника.</p>
</body>
</html>
style.css
.manual {
hyphens: manual;
}
.automatic {
hyphens: auto;
}