Кратко
СкопированоСвойство white указывает браузеру, как обрабатывать пробелы в тексте.
Пример
Скопировано
<nav> <ul> <li><a href="/about">О команде</a></li> <li><a href="/projects">Наши проекты</a></li> <li><a href="/contact-us">Связаться с нами</a></li> <li><a href="/help">Помощь</a></li> </ul></nav>
<nav>
<ul>
<li><a href="/about">О команде</a></li>
<li><a href="/projects">Наши проекты</a></li>
<li><a href="/contact-us">Связаться с нами</a></li>
<li><a href="/help">Помощь</a></li>
</ul>
</nav>
a { white-space: nowrap;}
a {
white-space: nowrap;
}
Как пишется
СкопированоКлючевые слова:
.element { white-space: normal; white-space: nowrap; white-space: pre; white-space: pre-wrap; white-space: pre-line; white-space: break-spaces;}
.element {
white-space: normal;
white-space: nowrap;
white-space: pre;
white-space: pre-wrap;
white-space: pre-line;
white-space: break-spaces;
}
Как понять
СкопированоЕсли текста в элементе много (больше, чем может вместить ширина элемента), то по умолчанию браузер пытается переносить слова на новую строку. Перенос в общем случае выполняется по символам пробела либо по символам переноса строк. Разговор сейчас идёт именно про форматирование текста прямо внутри HTML. Ведь мы можем в HTML длинный абзац оставить одной строкой, а можем разбить на несколько строк, используя клавишу Enter. По умолчанию браузер игнорирует форматирование в HTML. Он ориентируется только на теги, и выводит текст на экран, опираясь на текущий способ обработки пробельных символов. Но мы можем изменить этот способ, используя различные значения свойства white.
normal
СкопированоЕсли в строке есть несколько подряд идущих пробелов, то браузер схлопывает их в один пробел. Я из лесу вышел = Я из лесу вышел. Все переносы строк в HTML внутри тега также заменяются на пробел:
<p> Однажды, <!-- Перенос строки --> в студёную <!-- Перенос строки --> зимнюю <!-- Перенос строки --> пору</p><p>Я из лесу вышел;</p>
<p>
Однажды, <!-- Перенос строки -->
в студёную <!-- Перенос строки -->
зимнюю <!-- Перенос строки -->
пору
</p>
<p>Я из лесу вышел;</p>
В итоге текст на странице переносится по пробелам, учитывая границы элемента.
nowrap
СкопированоПодряд идущие пробелы и переносы строк обрабатываются так же, как и с normal, но браузер перестаёт учитывать границы элемента и выводит весь текст в одну строку.
pre
СкопированоСохраняется всё форматирование из HTML, включая переносы строк и последовательности пробелов. Границы элемента игнорируются, и текст может выходить за них.
pre-wrap
СкопированоСохраняется всё форматирование из HTML, включая переносы строк и последовательности пробелов. В отличие от pre текст переносится автоматически при достижении границы элемента.
pre-line
СкопированоПодряд идущие пробелы схлопываются, но остальное форматирование из HTML сохраняется, текст переносится в местах переноса строк в HTML. Текст переносится автоматически при достижении границ элемента.
break-spaces
СкопированоПоведение аналогично pre, за исключением одного отличия. Мы помним, что при значении pre слова переносятся, учитывая границы элемента, но если за крайним словом у границы следуют несколько пробелов, то они сохраняются в той же строке. В варианте с break эти пробелы поведут себя сложнее. Какая-то их часть останется на той же строке, дополняя ширину элемента до максимально допустимой, а вторая часть пробелов перенесётся на новую строку.

<p>Однажды, в студёную зимнюю пору Я из лесу вышел; был сильный мороз.</p>
<p>Однажды, в студёную зимнюю пору
Я из лесу вышел; был сильный мороз.</p>
Подсказки
Скопировано💡 Принудительно организовать перенос текста вне зависимости от форматирования можно с использованием тега <br>. Поведение текста при использовании этого тега одинаково при любых значениях свойства white. Даже при значении nowrap текст будет переноситься в том месте, где используется <br>.
На практике
Скопированосоветует
Скопировано🛠 Довольно часто значение white используется при вёрстке исходного кода: