CSS page-break-inside — розрив сторінки при друку
Властивість page-break-inside додає розрив сторінки при друку документа всередині елемента.
Ця властивість стосується елементів блоку, які генерують контейнер. Він не застосовуватиметься до порожнього <div> (або того, що абсолютно позиційований), який не генерує контейнер.
Загальний опис
автор: NagarD
- Порада
-
Зауважте, що замість властивості
автор: Svitlanapage-break-insideможна використовувати більш загальну властивістьbreak-inside. Ця нова властивість також обробляє переривання стовпців та регіонів і є синтаксично більш сумісною з перериванням сторінки. Перш ніж використовуватиpage-break-inside, перевірте, чи можна використовувати замість неїbreak-inside. У майбутньомуpage-break-insideвикористовуватиметься все рідше на користьbreak-inside.
Синтаксис
page-break-inside: auto|avoid|initial|inherit;
Властивість page-break-inside може отримувати 4 значень:
-
auto -
Вставляє розрив сторінки при необхідності
автор: Svitlana -
avoid -
Забороняє розрив сторінки після елемента
автор: Svitlana -
initial -
Встановлює властивість у значення без задання
автор: Svitlana -
inherit -
Вказує на спадковість властивостей від свого батьківського елемента
автор: Svitlana
| Значення без задання: | auto |
|---|---|
| Наслідує: | Ні |
| Анімується: | Ні |
| JavaScript синтаксис: | object.style.pageBreakInside="avoid" |
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 1 | 19 | 1.3 | 7 | 12 | 8 |
| Переглядач | ||||
|---|---|---|---|---|
| 4.4 | 18 | 19 | 1 |
Приклади
+ запропонувати свій приклад у пісочниці
У друці абзац не розріжеться між аркушами: якщо цілим не вміщається — переїде на наступний. Перевіряється в попередньому перегляді друку; сучасніша назва — break-inside.
HTML
<p>Цей абзац у друкованій версії не буде розірвано между аркушами — він або вміститься, або переїде цілим.</p>
CSS
@media print {
p {
page-break-inside: avoid;
}
}
Приклад використання
HTML
<h2>Приклад використання властивості</h2>
<p class="inside">Властивість <code>page-break-inside</code> додає розрив сторінки при друку документа всередині заданого елемент. У цьому прикладі для цього абзацу встановлено правило <code>page-break-inside: avoid;</code> (яке застосовується тільки під-час друку документа), що забороняє розрив сторінки після елемента.</p>
<p>Читати далі...</p>
CSS
@media print {
.inside {
page-break-inside: avoid;
}
}
Дві однакові добірки карток у двох колонках. Угорі картки рвуться між колонками, унизу break-inside: avoid тримає кожну цілою — той самий механізм працює й на розривах сторінок при друку.
HTML
<p><b>break-inside: auto</b></p>
<div class="cols">
<div class="card">Картка 1. Один рядок, другий рядок, третій рядок, четвертий рядок.</div>
<div class="card">Картка 2. Один рядок, другий рядок, третій рядок, четвертий рядок.</div>
<div class="card">Картка 3. Один рядок, другий рядок, третій рядок, четвертий рядок.</div>
</div>
<p><b>break-inside: avoid</b></p>
<div class="cols keep">
<div class="card">Картка 1. Один рядок, другий рядок, третій рядок, четвертий рядок.</div>
<div class="card">Картка 2. Один рядок, другий рядок, третій рядок, четвертий рядок.</div>
<div class="card">Картка 3. Один рядок, другий рядок, третій рядок, четвертий рядок.</div>
</div>
CSS
body {
font-family: sans-serif;
font-size: 14px;
padding: 16px;
}
b {
font-family: monospace;
}
.cols {
columns: 2;
column-gap: 16px;
width: 360px;
border: 2px solid #bbb;
padding: 8px;
}
.card {
background: #eef;
border: 1px solid #7a86c9;
padding: 8px;
margin-bottom: 8px;
}
.keep .card {
page-break-inside: avoid;
break-inside: avoid;
}
Значення у дії
HTML
<p>Вибери потрібне значення для <code>page-break-inside</code>:</p>
<p><strong>Ця властивість може не підтримуватися Вашим браузером!</strong></p>
<p><em>Ця властивість впливає на елементи тільки під-час друку документа!</em></p>
<div class="inputs">
<input id="auto" checked name="page-break-inside" type="radio"/>
<label for="auto">auto</label>
<message for="auto">Вставляє розрив сторінки при необхідності.</message>
<input id="avoid" name="page-break-inside" type="radio"/>
<label for="avoid">avoid</label>
<message for="avoid">Забороняє розрив сторінки після елемента.</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-inside: 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-inside', this.id));
}));
Коментарі
Коментарів ще немає — будьте першим!