W3docs

Свойство CSS break-before

Свойство CSS break-before определяет, допускается ли разрыв перед основным блоком, нужно ли его избегать или принудительно вставить. Примеры и описание.

Свойство CSS break-before управляет тем, должен ли разрыв страницы, колонки или региона вставляться перед элементом. Это современная многоконтекстная замена свойства page-break-before, предназначенного только для печати: то же ключевое слово теперь работает для страничных носителей (печать/PDF), многоколоночных макетов (column-count) и CSS-регионов.

На этой странице рассматривается, что делает break-before, когда полезно каждое значение, как оно взаимодействует с соседними правилами разрыва, а также приводится интерактивный пример.

Зачем нужен break-before

Два совершенно разных сценария вёрстки требуют одного и того же вида управления:

  • Печать. Когда длинный документ отправляется на принтер или экспортируется в PDF, браузер сам решает, где заканчивается одна страница и начинается следующая. break-before: page позволяет принудительно начать новую страницу — например, чтобы каждый <h1> главы начинался вверху чистой страницы.
  • Многоколоночный текст. В макете column-count содержимое перетекает из одной колонки в следующую. break-before: column заставляет заголовок или рисунок начинаться с новой колонки, а не оказываться в нижней части предыдущей.

Ключевое слово avoid делает обратное: оно просит браузер не делать разрыв прямо перед элементом — именно так заголовок удерживается вместе со следующим за ним абзацем.

Как вычисляется break-before

Когда два соседних элемента запрашивают разрыв (один через break-after, следующий через break-before), браузер объединяет их и побеждает более сильный разрыв:

  • Принудительные разрывы (always, page, column, left, right) всегда применяются.
  • avoid — лишь подсказка: браузер всё равно может сделать разрыв, если у него нет другого выхода (например, элемент выше одной страницы).
  • Если ни одна из сторон не задаёт принудительный разрыв, auto позволяет браузеру решать самостоятельно.

Учтите, что break-before действует только на элементы, которые генерируют блок и находятся в контексте фрагментации (печатный документ, многоколоночный контейнер или регион). На обычной экранной одноколоночной странице оно не имеет видимого эффекта.

Связанные свойства

  • break-after — то же управление, но для конца элемента.
  • break-inside — предотвращает разбиение элемента (строки таблицы, рисунка, карточки) через разрыв.
  • columns и column-rule — задают многоколоночный макет, внутри которого работает break-before: column.
Начальное значениеauto
Применяется кБлочные элементы.
НаследуетсяНет.
АнимируетсяДискретно.
ВерсияCSS3
DOM-синтаксисobject.style.breakBefore = "auto";

Синтаксис

break-before: auto | avoid | always | page | column | left | right | initial | inherit;

Пример: запрет разрыва в многоколоночном макете

В многоколоночном блоке ниже элемент <hr> между двумя секциями имеет break-before: avoid, что просит браузер не начинать новую колонку прямо перед горизонтальной линией. Измените ширину области результата так, чтобы текст расположился в три колонки, и увидите эффект:

<!DOCTYPE html>
<html>
  <head>
    <title>The title of the document</title>
    <style>
      .multicol {
        background-color: #eee;
        padding: 10px;
        column-count: 3;
        column-rule: 2px dotted #ccc;
      }
      .multicol hr {
        break-before: avoid;
      }
    </style>
  </head>
  <body>
    <h2>Break-before example</h2>
    <div class="multicol">
      <h2>Lorem ipsum</h2>
      <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. </p>
      <hr />
      <h2>Lorem ipsum</h2>
      <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.</p>
    </div>
  </body>
</html>

Результат

Значения свойства CSS break-before

Пример: принудительный разрыв страницы при печати

Распространённое требование к печати — начинать каждую главу с новой страницы. Примените break-before: page к заголовку главы, и правило вступит в силу в режиме предварительного просмотра печати (Ctrl/Cmd + P) или при экспорте в PDF:

.chapter {
  break-before: page;
}
<h1 class="chapter">Chapter 1</h1>
<p>Intro text…</p>

<h1 class="chapter">Chapter 2</h1>
<p>This heading begins on a new printed page.</p>

Поскольку разрыв применяется только к страничным носителям, на обычном прокручиваемом экране он не виден — откройте диалог печати, чтобы увидеть результат.

Значения

ЗначениеОписание
autoПо умолчанию. Допускает любой разрыв перед основным блоком.
avoidИзбегает любого разрыва перед основным блоком.
alwaysПринудительно вставляет разрыв перед основным блоком.
pageПринудительно вставляет разрыв страницы перед основным блоком.
columnПринудительно вставляет разрыв колонки перед основным блоком.
leftВставляет один или два разрыва страницы перед основным блоком, чтобы следующая страница была левой.
rightВставляет один или два разрыва страницы перед основным блоком, чтобы следующая страница была правой.
initialУстанавливает свойство в значение по умолчанию.
inheritНаследует значение свойства от родительского элемента.

Практика

Практика
Что делает свойство CSS 'break-before'?
Что делает свойство CSS 'break-before'?
Was this page helpful?