break-before
Свойство break-before CSS задаёт поведение разрывов страницы, колонки или области перед сгенерированным блоком. Если сгенерированного блока нет, свойство игнорируется.
Попробовать
Синтаксис
/* Generic break values */ break-before: auto; break-before: avoid; break-before: always; break-before: all; /* Page break values */ break-before: avoid-page; break-before: page; break-before: left; break-before: right; break-before: recto; break-before: verso; /* Column break values */ break-before: avoid-column; break-before: column; /* Region break values */ break-before: avoid-region; break-before: region; /* Global values */ break-before: inherit; break-before: initial; break-before: revert; break-before: revert-layer; break-before: unset;
Каждый возможный разрыв (другими словами, каждый предел элемента) зависит от трёх свойств: значение break-after предыдущего элемента, значение break-before следующего элемента и значение break-inside содержащего элемента.
Для определения необходимости разрыва применяются следующие правила:
- Если любое из трёх значений является значением принудительного разрыва (
always,left,right,page,column, илиregion), оно имеет приоритет. Если несколько из них являются такими разрывами, используется значение элемента, который появляется последним в потоке (т. е., значениеbreak-beforeимеет приоритет над значениемbreak-after, которое в свою очередь имеет приоритет над значениемbreak-inside). - Если любое из трёх значений является значением избегания разрыва (
avoid,avoid-page,avoid-region, илиavoid-column), такой разрыв не будет применён в этой точке.
После применения принудительных разрывов, могут быть добавлены мягкие разрывы, если это необходимо, но не на границах элементов, которые приводят к соответствующему значению avoid.
Значения
Общие значения разрыва
auto-
Разрешает, но не принуждает вставить любой разрыв (страницы, колонки или области) прямо перед главным блоком.
avoid-
Избегает вставки любого разрыва (страницы, колонки или области) прямо перед главным блоком.
always-
Принуждает разрыв страницы сразу после главного блока. Тип этого разрыва - тип непосредственно содержащего контекста фрагментации. Если мы находимся внутри контейнера multicol, он принудительно создаёт разрыв колонки, внутри страниц (но не внутри контейнера multicol) - разрыв страницы.
all-
Принуждает разрыв страницы сразу после главного блока. Пробивает все возможные контексты фрагментации. Таким образом, разрыв внутри контейнера multicol, который находился внутри контейнера страницы, принудительно создаст разрыв колонки и страницы.
Значения разрыва страницы
avoid-page-
Избегает разрыва страницы перед главным блоком.
page-
Принуждает разрыв страницы перед главным блоком.
left-
Принуждает один или два разрыва страницы перед главным блоком, в зависимости от того, что сделает следующую страницу левой страницей. Это страница, расположенная с левой стороны корешка книги или обратная сторона страницы при двусторонней печати.
right-
Принуждает один или два разрыва страницы перед главным блоком, в зависимости от того, что сделает следующую страницу правой страницей. Это страница, расположенная с правой стороны корешка книги или лицевая сторона страницы при двусторонней печати.
recto-
Принуждает один или два разрыва страницы перед главным блоком, в зависимости от того, что сделает следующую страницу лицевой. (Лицевая страница - правая страница в развороте слева направо или левая страница в развороте справа налево.)
verso-
Принуждает один или два разрыва страницы перед главным блоком, в зависимости от того, что сделает следующую страницу оборотной. (Оборотная страница - левая страница в развороте слева направо или правая страница в развороте справа налево.)
Значения разрыва колонки
avoid-column-
Избегает разрыва колонки перед главным блоком.
column-
Принуждает разрыв колонки перед главным блоком.
Значения разрыва области
avoid-region-
Избегает разрыва области перед главным блоком.
region-
Принуждает разрыв области перед главным блоком.
Псевдонимы разрыва страницы
По соображениям совместимости, устаревшее свойство page-break-before должно обрабатываться браузерами как псевдоним break-before. Это гарантирует, что сайты, использующие page-break-before , продолжат работать как задумывалось. Подмножество значений должно быть переименовано следующим образом:
| page-break-before | break-before |
|---|---|
auto | auto |
left | left |
right | right |
avoid | avoid |
always | page |
Примечание: значение always page-break-* было реализовано браузерами как разрыв страницы, а не как разрыв колонки. Поэтому переименование выполняется в page, а не в always значение в спецификации уровня 4.
Формальное определение
| Начальное значение | auto |
|---|---|
| Применяется к | блочным элементам |
| Наследуется | нет |
| Вычисленное значение | как указано |
| Тип анимации | дискретный |
Формальный синтаксис
Примеры
Разбиение на аккуратные колонки
В следующем примере у нас есть контейнер, содержащий <h1>, охватывающий все колонки (достигнуто с помощью column-span: all) и ряд <h2> и абзацев, расположенных в нескольких колонках с помощью column-width: 200px.
По умолчанию подзаголовки и абзацы располагались довольно беспорядочно, потому что подзаголовки не были в одинаковом месте. Однако мы использовали break-before: column на <h2> элементах, чтобы принудительно создать разрыв колонки перед каждым из них, что означает, что вы получаете <h2> аккуратно вверху каждой колонки.
HTML
<article>
<h1>Main heading</h1>
<h2>Subheading</h2>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla vitae
fringilla mauris. Quisque commodo eget nisi sed pretium. Mauris luctus nec
lacus in ultricies. Mauris vitae hendrerit arcu, ac scelerisque lacus.
Aliquam lobortis in lacus sit amet posuere. Fusce iaculis urna id neque
dapibus, eu lacinia lectus dictum.
</p>
<h2>Subheading</h2>
<p>
Praesent condimentum dui dui, sit amet rutrum diam tincidunt eu. Cras
suscipit porta leo sit amet rutrum. Sed vehicula ornare tincidunt. Curabitur
a ipsum ac diam mattis volutpat ac ut elit. Nullam luctus justo non
vestibulum gravida. Morbi metus libero, pharetra non porttitor a, molestie
nec nisi.
</p>
<h2>Subheading</h2>
<p>
Vivamus eleifend metus vitae neque placerat, eget interdum elit mattis.
Donec eu vulputate nibh. Ut turpis leo, malesuada quis nisl nec, volutpat
egestas tellus.
</p>
<h2>Subheading</h2>
<p>
In finibus viverra enim vel suscipit. Quisque consequat velit eu orci
malesuada, ut interdum tortor molestie. Proin sed pellentesque augue. Nam
risus justo, faucibus non porta a, congue vel massa. Cras luctus lacus nisl,
sed tincidunt velit pharetra ac. Duis suscipit faucibus dui sed ultricies.
</p>
</article>
CSS
html {
font-family: helvetica, arial, sans-serif;
}
h1 {
font-size: 3rem;
letter-spacing: 2px;
column-span: all;
}
h2 {
font-size: 1.2rem;
color: red;
letter-spacing: 1px;
break-before: column;
}
p {
line-height: 1.5;
}
article {
column-width: 200px;
gap: 20px;
}
Результат
Спецификации
| Спецификация |
|---|
| CSS Модуль фрагментации уровня 3 # break-between |
| CSS Модуль областей уровня 1 # region-flow-break |
| CSS Модуль многоколоночной компоновки уровня 1 # break-before-break-after-break-inside |
Совместимость с браузерами
| Десктоп | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Хром | Эдж | Файрфокс | Опера | Сафари | Хром для Android | Файрфокс для Android | Опера для Android | Сафари на iOS | Samsung Internet | WebView Android | |
break-before |
50 | 12 | 65 | 3711.1–12.1 | 10 | 50 | 65 | 3711.1–12.1 | 10 | 5.0 | 50 |
always |
Нет | Нет | ≤72 | Нет | Нет | Нет | 79 | Нет | Нет | Нет | Нет |
auto |
≤80 | ≤80 | ≤72 | 67 | ≤13.1 | 80 | 79 | 57 | ≤13.4 | 13.0 | 80 |
avoid |
≤80 | ≤80 | ≤72 | 67 | ≤13.1 | 80 | 79 | 57 | ≤13.4 | 13.0 | 80 |
avoid-column |
≤80 | ≤80 | Нет | 67 | ≤13.1 | 80 | Нет | 57 | ≤13.4 | 13.0 | 80 |
avoid-page |
≤80 | ≤80 | Нет | 67 | ≤13.1 | 80 | Нет | 57 | ≤13.4 | 13.0 | 80 |
column |
≤80 | ≤80 | Нет | 67 | ≤13.1 | 80 | Нет | 57 | ≤13.4 | 13.0 | 80 |
left |
≤80 | ≤80 | ≤72 | 67 | ≤13.1 | 80 | 79 | 57 | ≤13.4 | 13.0 | 80 |
multicol_context |
50 | 12 | 65Поддерживается только в режиме печати. См. ошибку 1675322. |
3711.1–12.1 | Нет | 50 | 65Поддерживается только в режиме печати. См. ошибку 1675322. |
3711.1–12.1 | Нет | 5.0 | 50 |
page |
≤80 | ≤80 | ≤72 | 67 | ≤13.1 | 80 | 79 | 57 | ≤13.4 | 13.0 | 80 |
paged_context |
50 | 12 | 65 | 3711.1–12.1 | 10 | 50 | 65 | 3711.1–12.1 | 10 | 5.0 | 50 |
recto |
≤80 | ≤80 | Нет | 67 | ≤13.1 | 80 | Нет | 57 | ≤13.4 | 13.0 | 80 |
right |
≤80 | ≤80 | ≤72 | 67 | ≤13.1 | 80 | 79 | 57 | ≤13.4 | 13.0 | 80 |
verso |
≤80 | ≤80 | Нет | 67 | ≤13.1 | 80 | Нет | 57 | ≤13.4 | 13.0 | 80 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/break-before