break-after в CSS — розрив сторінки чи колонки після блока
автор: Svitlana
Загальний опис
автор: NagarD
- Порада
-
Також зауважте, що на момент написання більшість браузерів підтримують властивість у специфікації CSS 2.1, але не останню специфікацію.
автор: Svitlana - Нотатка
-
Браузери WebKit і Blink не підтримують цю властивість, але деякі з них мають нестандартні властивості
автор: Svitlana-webkit-column-break-afterі-webkit-region break-withз аналогічними параметрами, якbreak-after.
Синтаксис
break-after: auto | avoid | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region;
Властивість break-after може отримувати 12 значень:
-
auto -
НІ вказує, ні забороняє переривання сторінки або стовпця.
автор: Svitlana -
avoid -
Уникання переривання сторінки після основного контейнера.
автор: Svitlana -
avoid-page -
Уникання переривання сторінки після основного контейнера.
автор: Svitlana -
page -
Завжди примусове переривання сторінки після основного контейнера.
автор: Svitlana -
left -
Змушує одне або два розбиття сторінки після основного контейнера, щоб наступна сторінка була відформатована як ліва.
автор: Svitlana -
right -
Змушує одне або два розбиття сторінки після основного контейнера, щоб наступна сторінка була відформатована як права.
автор: Svitlana -
recto -
Змушує одне або два розбиття сторінки після основного контейнера, щоб наступна сторінка була відформатована або як ліва сторінка, або права сторінка, залежно від того, яка сторінка є другою.
автор: Svitlana -
verso -
Змушує одне або два розбиття сторінки після основного контейнера, щоб наступна сторінка була відформатована або як ліва сторінка, або права сторінка, залежно від того, яка сторінка є першою.
автор: Svitlana -
avoid-column -
Уникання переривання колонки після основного контейнера.
автор: Svitlana -
column -
Завжди примусове переривання колонки після основного контейнера.
автор: Svitlana -
avoid-region -
Уникання переривання області після основного контейнера.
автор: Svitlana -
region -
Завжди примусове переривання області після основного контейнера.
автор: Svitlana
| Значення без задання: | auto |
|---|---|
| Наслідує: | Ні |
| Анімується: | Так |
| JavaScript синтаксис: | object.style.pageBreakAfter = ''; |
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| 50 | 65 | 10 | 37 | 12 | 10 | |
| column | 50.0 | Не підтримується | Не підтримується | - | 12.0 | 10.0 |
| avoid-column | Не підтримується | Не підтримується | - | Не підтримується | 12.0 | Не підтримується |
| always | Не підтримується | Не підтримується | Не підтримується | Не підтримується | Не підтримується | Не підтримується |
| Переглядач | ||||
|---|---|---|---|---|
| 50 | 50 | 65 | 10 | |
| column | - | Не підтримується | Не підтримується | |
| avoid-column | Не підтримується | Не підтримується | - | |
| always | Не підтримується | Не підтримується | Не підтримується |
Приклади
+ запропонувати свій приклад у пісочниці
Після заголовка стоїть break-after: column — наступний вміст примусово починається з нової колонки, хоч місце в поточній ще було.
HTML
<div class="cols">
<h3>Заголовок</h3>
<p>Багатоколонкова верстка ділить текст автоматично: браузер сам вирішує, де перервати рядок і почати нову колонку. Що довший текст, то краще видно поділ — тому цей абзац навмисно багатослівний і ще й трохи повторюється, щоб колонкам було чим заповнитися.</p>
</div>
CSS
.cols {
columns: 2;
column-rule: 1px solid #ccc;
}
h3 {
break-after: column;
}
Використання
HTML
<p><strong>Ця властивість може не підтримуватися Вашим браузером (підтримується лише Internet Explorer та Opera 11.10 - 12.1, й то частково)!</strong></p>
<div class="multicol">
<h3>Heading</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.</p>
<hr>
<h3>Heading 2</h3>
<p>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. 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.</p>
</div>
CSS
.multicol {
background-color: beige;
padding: 10px;
/* Safari and Chrome */
-webkit-column-count: 3;
-webkit-column-rule: 2px dotted olivedrab;
/* Firefox */
-moz-column-count: 3;
-moz-column-rule: 2px dotted olivedrab;
/* CSS3 */
column-count: 3;
column-rule: 2px dotted olivedrab;
}
.multicol hr {
break-after: column;
}
Значення у дії
HTML
<p>Вибери потрібне значення для <code>break-after</code>:</p>
<p><strong>Зверніть увагу, що ця властивість дуже слабо підтримується сучасними браузерами!</strong></p>
<div class="inputs">
<input id="auto" checked name="break-after" type="radio"/>
<label for="auto">auto</label>
<message for="auto">Ні вказує, ні забороняє переривання сторінки або стовпця.</message>
<input id="avoid" name="break-after" type="radio"/>
<label for="avoid">avoid</label>
<message for="avoid">Уникання переривання сторінки після основного контейнера.</message>
<input id="avoid-page" name="break-after" type="radio"/>
<label for="avoid-page">avoid-page</label>
<message for="avoid-page">Уникання переривання сторінки після основного контейнера.</message>
<input id="page" name="break-after" type="radio"/>
<label for="page">page</label>
<message for="page">Завжди примусове переривання сторінки після основного контейнера.</message>
<input id="left" name="break-after" type="radio"/>
<label for="left">left</label>
<message for="left">Змушує одне або два розбиття сторінки після основного контейнера, щоб наступна сторінка була відформатована як ліва.</message>
<input id="right" name="break-after" type="radio"/>
<label for="right">right</label>
<message for="right">Можна змінювати розміри елемента по горизонталі та вертикалі.</message>
<input id="both" name="break-after" type="radio"/>
<label for="both">both</label>
<message for="both">Змушує одне або два розбиття сторінки після основного контейнера, щоб наступна сторінка була відформатована як права.</message>
<input id="recto" name="break-after" type="radio"/>
<label for="recto">recto</label>
<message for="recto">Можна змінювати розміри елемента по горизонталі та вертикалі.</message>
<input id="verso" name="break-after" type="radio"/>
<label for="verso">verso</label>
<message for="verso">Можна змінювати розміри елемента по горизонталі та вертикалі.</message>
<input id="avoid-column" name="break-after" type="radio"/>
<label for="avoid-column">avoid-column</label>
<message for="avoid-column">Уникання переривання колонки після основного контейнера.</message>
<input id="column" name="break-after" type="radio"/>
<label for="column">column</label>
<message for="column">Завжди примусове переривання колонки після основного контейнера.</message>
<input id="avoid-region" name="break-after" type="radio"/>
<label for="avoid-region">avoid-region</label>
<message for="avoid-region">Уникання переривання області після основного контейнера.</message>
<input id="region" name="break-after" type="radio"/>
<label for="region">avoid</label>
<message for="region">Завжди примусове переривання області після основного контейнера.</message>
</div>
<p id="message">Ні вказує, ні забороняє переривання сторінки або стовпця.</p>
<hr>
<div id="block">
<h3>Heading</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.</p>
<hr id="hr">
<h3>Heading 2</h3>
<p>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. 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.</p>
</div>
CSS
* {
box-sizing: border-box;
padding: 0;
}
body {
text-align: center;
font-family: monospace;
font-size: 17px;
line-height: 1.5;
color: #222;
}
#form {
padding: 8px 16px;
font-size: 19px;
}
#block {
background-color: beige;
padding: 10px;
/* Safari and Chrome */
-webkit-column-count: 3;
-webkit-column-rule: 2px dotted olivedrab;
/* Firefox */
-moz-column-count: 3;
-moz-column-rule: 2px dotted olivedrab;
/* CSS3 */
column-count: 3;
column-rule: 2px dotted olivedrab;
}
#hr {
break-after: 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('#hr').forEach((n) => n.style.setProperty('break-after', this.id));
}));
Чотири однакові блоки на три колонки з column-fill: auto. Червоний абзац просить розрив після себе різними значеннями: column (працює в Chrome, у Firefox не діє), always (не переносить колонку в жодному браузері) і page (для друку). Останній блок показує те, що працює скрізь, — break-inside: avoid на високій картці, яка не хоче ділитися між колонками.
HTML
<p class="cap">1. Без розривів — усе тече суцільно:</p>
<div class="mc">
<p>перший</p><p>другий</p><p class="hot">третій</p><p>четвертий</p><p>п'ятий</p>
</div>
<p class="cap">2. break-after: column — у Chrome четвертий переїде в другу колонку, у Firefox ні:</p>
<div class="mc">
<p>перший</p><p>другий</p><p class="hot col">третій</p><p>четвертий</p><p>п'ятий</p>
</div>
<p class="cap">3. break-after: always — колонку не розриває ніде:</p>
<div class="mc">
<p>перший</p><p>другий</p><p class="hot alw">третій</p><p>четвертий</p><p>п'ятий</p>
</div>
<p class="cap">4. break-inside: avoid — працює скрізь: висока картка не ділиться:</p>
<div class="mc">
<p>перший</p><p>другий</p>
<div class="card">картка, яку не можна різати</div>
<p>після картки</p>
</div>
CSS
.cap {
margin: 18px 0 6px;
max-width: 620px;
font: 600 .9em/1.45 system-ui, sans-serif;
color: #5a6472;
}
.mc {
column-count: 3;
column-gap: 16px;
column-fill: auto;
column-rule: 1px solid #b9c6d8;
width: 460px;
height: 120px;
padding: 6px;
border: 1px solid #b9c6d8;
font: 13px/24px system-ui, sans-serif;
}
.mc p {
margin: 0;
background: #eef1f5;
}
.mc .hot {
background: #c0392b;
color: #fff;
}
.col {
break-after: column;
}
.alw {
break-after: always;
}
.card {
break-inside: avoid;
height: 72px;
padding: 4px 6px;
background: #f2b134;
}
Коментарі
Коментарів ще немає — будьте першим!