break-after в CSS — розрив сторінки чи колонки після блока


автор: Svitlana

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

автор: NagarD

Порада

Також зауважте, що на момент написання більшість браузерів підтримують властивість у специфікації CSS 2.1, але не останню специфікацію.

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

Браузери WebKit і Blink не підтримують цю властивість, але деякі з них мають нестандартні властивості -webkit-column-break-after і -webkit-region break-with з аналогічними параметрами, як break-after.

автор: Svitlana

Синтаксис

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 = '';

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
50 65 10 37 12 10
column 50.0 Не підтримується Не підтримується - 12.0 10.0
avoid-column Не підтримується Не підтримується - Не підтримується 12.0 Не підтримується
always Не підтримується Не підтримується Не підтримується Не підтримується Не підтримується Не підтримується
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
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;
}
автор: Svitlana

Використання

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;
}
автор: Svitlana

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

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));

}));
автор: Svitlana

Чотири однакові блоки на три колонки з 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;
}
автор: NagarD

Коментарі

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

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

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[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`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

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

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