CSS page-break-before — розрив перед елементом


Властивість page-break-before додає розрив сторінки при друку документа перед заданим елементом.

Ця властивість стосується елементів блоку, які генерують контейнер. Він не застосовуватиметься до порожнього <div> (або того, що абсолютно позиційований), який не генерує контейнер.

автор: Svitlana

Загальний опис

автор: NagarD

Порада

Зауважте, що замість властивості page-break-before можна використовувати більш загальну властивість break-before. Ця нова властивість також обробляє переривання стовпців та регіонів і є синтаксично більш сумісною з перериванням сторінки. Перш ніж використовувати page-break-before, перевірте, чи можна використовувати замість неї break-before. У майбутньому page-break-before використовуватиметься все рідше на користь break-before.

автор: Svitlana
Нотатка

Браузер Firefox не підримує значення avoid, left i right. Жоден із браузерів не підтримує avoid.

автор: Svitlana

Синтаксис

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

Властивість page-break-before може отримувати 7 значень:

auto

Вставляє розрив сторінки при необхідності

автор: Svitlana

always

Завжди додає розрив сторінки після елемента

автор: Svitlana

avoid

Забороняє розрив сторінки після елемента

автор: Svitlana

left

Пропускає одну або дві сторінки після елемента, щоб наступна сторінка при друку була парною

автор: Svitlana

right

Пропускає одну або дві сторінки після елемента, щоб наступна сторінка при друку була непарною

автор: Svitlana

initial

Встановлює властивість у значення без задання

автор: Svitlana

inherit

Вказує на спадковість властивостей від свого батьківського елемента

автор: Svitlana

Значення без задання: auto
Наслідує: Ні
Анімується: Ні
JavaScript синтаксис: object.style.pageBreakBefore="always"

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1.2 7 12 4
auto, always 1.0 1.0 1.2 7.0 12.0 4.0
avoid, left, right 1.0 Не підтримується 1.2 7.0 12.0 4.0
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
auto, always 1.0 1.0 1.3
avoid, left, right 1.0 Не підтримується 1.3

Приклади

+ запропонувати свій приклад у пісочниці

У друці кожен h1 починає новий аркуш — зручно для розділів документа. На екрані нічого не змінюється; сучасніша назва — break-before.

HTML

<p>Вступ на першому аркуші.</p>
<h1>Розділ 1 — з нового аркуша</h1>
<p>Текст розділу.</p>

CSS

@media print {
    h1 {
        page-break-before: always;
    }
}
автор: Svitlana

Розрив сторінки на екрані не видно, зате видно розрив колонки — механізм той самий. Абзац із break-before: column починає новий стовпчик так само, як break-before: page починав би новий аркуш при друку.

HTML

<div class="cols">
    <p>Перший абзац тексту в двоколонковому блоці.</p>
    <p>Другий абзац іде відразу за ним і місця в колонці ще вистачає.</p>
    <p class="new">А цей абзац примусово починає нову колонку, хоча попередня не закінчилася.</p>
    <p>Наступний абзац продовжується вже після нього, у тій самій новій колонці.</p>
</div>

CSS

.cols {
    columns: 2;
    column-gap: 24px;
    column-rule: 1px dashed #999;
    padding: 10px;
    border: 1px solid #999;
    font: 13px/1.5 sans-serif;
}

.cols p {
    margin: 0 0 8px;
}

.new {
    break-before: column;
}

@media print {
    .new {
        page-break-before: always;
        break-before: page;
    }
}
автор: NagarD

Значення у дії

HTML

<p>Вибери потрібне значення для <code>page-break-before</code>:</p>

<p><strong>Ця властивість може не підтримуватися Вашим браузером!</strong></p>

<p><em>Ця властивість впливає на елементи тільки під-час друку документа!</em></p>

<div class="inputs">
  <input id="auto" checked name="page-break-before" type="radio"/>
  <label for="auto">auto</label>
  <message for="auto">Ні вказує, ні забороняє переривання сторінки або стовпця.</message>
  
  <input id="avoid" name="page-break-before" type="radio"/>
  <label for="avoid">avoid</label>
  <message for="avoid">Уникання переривання сторінки перед основним контейнером.</message>
  
  <input id="always" name="page-break-before" type="radio"/>
  <label for="always">always</label>
  <message for="always">Завжди додає розрив сторінки перед елементом.</message>
  
  <input id="left" name="page-break-before" type="radio"/>
  <label for="left">left</label>
  <message for="left">Пропускає одну або дві сторінки перед елементом, щоб наступна сторінка при друку була парною</message>
  
  <input id="right" name="page-break-before" type="radio"/>
  <label for="right">right</label>
  <message for="right">Пропускає одну або дві сторінки перед елементом, щоб наступна сторінка при друку була непарною.</message>
</div>

<p id="message">Ні вказує, ні забороняє переривання сторінки або стовпця.</p>

<hr>

<div class="multicol">
  <h3 id="block">Заголовок</h3>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>
  <p>А це ще просто текст, не звертайте уваги на нього...</p>
</div>

CSS

* {
  box-sizing: border-box;
  padding: 0;
}

body {
  font-family: monospace;
  font-size: 17px;
  line-height: 1.5;
  color: #222;
}

p, h4 {
  margin-top: 0;
}

#form {
  padding: 8px 16px;
  font-size: 19px;
}

.multicol {
  background-color: lightyellow;
  padding: 10px;

  /* Safari and Chrome */
  -webkit-column-count: 3;
  -webkit-column-rule: 2px dotted coral;

  /* Firefox */
  -moz-column-count: 3; 
  -moz-column-rule: 2px dotted coral;

  /* CSS3 */
  column-count: 3; 
  column-rule: 2px dotted coral;
}

#block {
  page-break-before: auto;
}

#text {
  height: 60px;
  background-color: #eee;
  padding: 16px 0;
}

message {
  display: none;
}

JS

const message = document.querySelector('#message');

document.querySelectorAll('.inputs input').forEach((el) => el.addEventListener('change', function () {

  var messageText = document.querySelector("message[for='" + this.id + "']");
  message.textContent = messageText?.textContent ?? '';

  document.querySelectorAll('#block').forEach((n) => n.style.setProperty('page-break-before', this.id));

}));
автор: Svitlana

Приклад використання

HTML

<h2>Приклад використання властивості</h2>

<p>Властивість <code>page-break-before</code> додає розрив сторінки при друку документа перед заданим елементом. У цьому прикладі для наступного елементу встановлено правило <code>page-break-after: always;</code> (яке застосовується тільки під-час друку документа), що завжди додає розрив сторінки перед ним.</p>

<p class="more">Читати далі...</p>

CSS

@media print {
  .more {
   page-break-before: always;
  }
}
автор: Svitlana

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід