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

Определение и применение

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

Свойство действует в контексте фрагментации: например, в многоколоночной раскладке или при печати. Обычный экранный блок без такого контекста не показывает разрывов. Запрет разрыва может быть нарушен, если содержимое не помещается целиком.

Для нового кода используйте break-before. Старое page-break-before сохранено как совместимый псевдоним для разрывов страниц. Значению always старого свойства соответствует page нового.

Попробуйте значения page-break-before

Это свойство проверяется в печати. Нажмите «Открыть печать примера» и сравните разбиение на страницы A5. Экранная область показывает только документ; она не имитирует страницы. Это прежнее имя свойства разрывов.

Значение свойства

page-break-before: auto

HTML и CSS примера
HTML
<div class="sheet">
  <div class="lead">Вступление занимает часть первой страницы.</div>
  <div class="demo-target">
    <p>
      Первый абзац объясняет разбиение содержимого. Текст переходит в следующую
      колонку, когда заканчивается доступная высота.
    </p>
    <p>
      Второй абзац содержит несколько строк, чтобы можно было сравнить перенос
      целого блока и его разделение.
    </p>
    <p>
      Первый абзац объясняет разбиение содержимого. Текст переходит в следующую
      колонку, когда заканчивается доступная высота.
    </p>
    <p>
      Второй абзац содержит несколько строк, чтобы можно было сравнить перенос
      целого блока и его разделение.
    </p>
  </div>
  <p>Конец документа.</p>
</div>
CSS
body {
  display: block;
  background: white;
  font: 16px/1.5 system-ui;
  color: #172c3d;
}
.sheet {
  max-width: 600px;
  margin: auto;
}
.lead {
  height: 110mm;
  background: #edf2f5;
}
.demo-target {
  background: #fff3d6;
  page-break-before: auto;
}
p {
  margin: 0 0 8px;
}
@page {
  size: A5;
  margin: 15mm;
}
@media print {
  body {
    padding: 0;
    min-height: 0;
    display: block;
  }
  .sheet {
    max-width: none;
  }
}

Поддержка браузерами

Устарела

Спецификации: CSS logical, CSS break

Поддерживается во всех основных браузерах с 2015 года.

Отдельные значения (1) поддерживаются не везде — смотрите таблицу.

Показать браузеры
Совместимостьcss.properties.page-break-before
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
page-break-before✓1✓12✓1✓7✓1.2✓18✓4✓14✓1✓1.0✓4.4✓1
always✓1✓12✓1✓15✓1.2✓18✓4✓14✓1✓1.0✓4.4✓1
auto✓1✓12✓1✓15✓1.2✓18✓4✓14✓1✓1.0✓4.4✓1
avoid✓1✓12×✓15×✓18×✓14×✓1.0✓4.4×
left✓1✓12✓1✓15✓1.2✓18✓4✓14✓1✓1.0✓4.4✓1
right✓1✓12✓1✓15✓1.2✓18✓4✓14✓1✓1.0✓4.4✓1

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

CSS синтаксис:

CSS
page-break-before: auto | always | avoid | left | right | recto | verso;

/* Глобальные значения */
page-break-before: initial | inherit | unset | revert | revert-layer;

| — выбор варианта.

JavaScript синтаксис:

JavaScript
element.style.pageBreakBefore = "avoid";

Начальное значение свойства

auto.

Значения свойства

Значения page-break-before
Значение Описание
auto Разрыв страниц до элемента (при печати) происходит в автоматическом режиме (при необходимости). Начальное значение.
always Всегда добавляет при печати разрыв страниц до элемента.
avoid Запрещает при печати разрыв страниц до элемента (если возможно).
left Принудительный разрыв перед следующей левой страницей; при необходимости добавляется пустая страница. Результат зависит от поддержки печатной пагинации.
right Принудительный разрыв перед следующей правой страницей; при необходимости добавляется пустая страница. Это правая, а не левая страница.
recto Начинает следующую страницу на лицевой стороне разворота; сторона зависит от направления перелистывания.
verso Начинает следующую страницу на оборотной стороне разворота.
initial Устанавливает начальное значение свойства.
inherit Наследует вычисленное значение свойства у родительского элемента.
unset Для ненаследуемого свойства page-break-before устанавливает его начальное значение.
revert Отменяет заданное в коде значение свойства для этого элемента: применяются пользовательские или стандартные стили браузера. Если они не задают значение, свойство наследуется или получает начальное значение по обычным правилам. Не возвращает значение из предыдущей строки CSS.
revert-layer Сбрасывает значение свойства для текущего слоя каскада @layer. Применяется значение из другого слоя по правилам каскада; если подходящего значения нет, возможен откат к стилям пользователя или браузера.

Спецификация

CSS Paged Media — спецификация page-break-before.

Наследуется

Нет.

Анимируемое

Тип анимации — дискретный: значение переключается без плавных промежуточных положений.

Пример, попробуйте сами

Чтобы увидеть разрывы страниц, скачайте HTML кнопкой в редакторе, откройте файл в браузере и вызовите печать (Ctrl+P). Встроенный просмотр показывает обычный документ без разбиения на страницы. После изменения CSS скачайте файл заново.

Разрыв перед разделом: попробуйте сами

При печати второй раздел начинается с новой страницы. Замените always на auto: оба раздела поместятся на одной странице.

base.css
CSS
* {
    box-sizing: border-box;
}
body {
    margin: 16px;
    color: #24364b;
    font:
        16px/1.5 Arial,
        sans-serif;
}
section {
    padding: 12px;
    border: 1px solid #70869c;
}
section + section {
    margin-top: 16px;
}
h1,
h2 {
    margin: 0 0 12px;
    font-size: 20px;
}
p {
    margin: 0 0 12px;
}
p:last-child {
    margin-bottom: 0;
}
@media print {
    body {
        margin: 0;
        color: #000;
    }
}
index.html
HTML
<!doctype html>
<html lang="ru">
  <head>
    <meta charset="UTF-8" />
    <title>Разрыв перед разделом</title>
  </head>
  <body>
    <section class="first">
      <h1>План занятия</h1>
      <p>Первый раздел: знакомство с HTML и CSS.</p>
    </section>
    <section class="second">
      <h2>Практическое задание</h2>
      <p>Второй раздел: создайте документ и проверьте его печать.</p>
    </section>
  </body>
</html>
style.css
CSS
@media print {
    .second {
        /* Замените always на auto и снова откройте предпросмотр печати. */
        page-break-before: always;
    }
}