Свойство CSS `break-inside`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с января 2019 года.
Свойство break-inside CSS задаёт поведение разрывов страниц, колонок или регионов внутри генерируемого блока. Если генерируемого блока нет, свойство игнорируется.
Попробуйте
break-inside: auto;
break-inside: avoid;
<div>
<p>
The effect of this property can be noticed when the document is being
printed or a preview of a print is displayed.
</p>
<button id="print-btn">Show Print Preview</button>
<div class="box-container">
<div class="box">Content before the property</div>
<div class="box" id="example-element">Content with 'break-inside'</div>
<div class="box">Content after the property</div>
</div>
</div>
.box {
border: solid #5b6dcd 5px;
background-color: #5b6dcd;
margin: 10px 0;
padding: 5px;
}
#example-element {
border: solid 5px #ffc129;
background-color: #ffc129;
color: black;
}
@media print {
#example-element {
height: 25cm;
}
}
const btn = document.getElementById("print-btn");
btn.addEventListener("click", () => {
window.print();
});
Синтаксис
/* Keyword values */ break-inside: auto; break-inside: avoid; break-inside: avoid-page; break-inside: avoid-column; break-inside: avoid-region; /* Global values */ break-inside: inherit; break-inside: initial; break-inside: revert; break-inside: revert-layer; break-inside: 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 - Не допускает вставку разрыва (страницы, колонки или региона) внутри основного блока.
-
avoid-page - Не допускает разрыв страницы внутри основного блока.
-
avoid-column - Не допускает разрыв колонки внутри основного блока.
-
avoid-region - Не допускает разрыв региона внутри основного блока.
Псевдонимы разрывов страниц
Для обеспечения совместимости браузеры должны обрабатывать устаревшее свойство page-break-inside как псевдоним break-inside. Это позволяет сайтам, использующим page-break-inside, продолжать работать так, как задумано. Подмножество значений следует сопоставлять следующим образом:
| page-break-inside | break-inside |
|---|---|
auto | auto |
avoid | avoid |
Формальное определение
| Исходное значение | auto |
|---|---|
| Применяется к | блочным элементам |
| Наследуется | нет |
| Вычисленное значение | как задано |
| Тип анимации | дискретный |
Формальный синтаксис
break-inside =
auto |
avoid |
avoid-page |
avoid-column |
avoid-region
Примеры
Предотвращение разрыва внутри иллюстрации
В следующем примере у нас есть контейнер, содержащий <h1>, который занимает все колонки (это достигается с помощью column-span: all), и несколько абзацев, размещённых в несколько колонок с помощью column-width: 200px. Также у нас есть <figure>, содержащий изображение и подпись.
По умолчанию между изображением и подписью может появиться разрыв, чего мы хотим избежать. Для этого мы задали break-inside: avoid для <figure>, чтобы они всегда оставались вместе.
HTML
<article>
<h1>Main heading</h1>
<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>
<figure>
<img
src="https://mdn.dev/archives/media/attachments/2020/07/29/17350/3b4892b7e820122ac6dd7678891d4507/firefox.png" />
<figcaption>The Firefox logo — fox wrapped around the world</figcaption>
</figure>
<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>
<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;
}
body {
width: 80%;
margin: 0 auto;
}
h1 {
font-size: 3rem;
letter-spacing: 2px;
column-span: all;
}
h1 + p {
margin-top: 0;
}
p {
line-height: 1.5;
break-after: column;
}
figure {
break-inside: avoid;
}
img {
max-width: 70%;
display: block;
margin: 0 auto;
}
figcaption {
font-style: italic;
font-size: 0.8rem;
width: 70%;
}
article {
column-width: 200px;
gap: 20px;
}
Результат
Спецификации
| Спецификация |
|---|
| Модуль фрагментации CSS, уровень 3 # break-within |
| Модуль регионов CSS, уровень 1 # region-flow-break |
| Модуль многоколоночной компоновки CSS, уровень 1 # break-before-break-after-break-inside |
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari на iOS | Samsung Internet | WebView для Android | WebView на iOS | |
break-inside |
50 |
12 |
65 |
37
11.1–12.1
|
10 |
50 |
65 |
37
11.1–12.1
|
10 |
5.0 |
50 |
10 |
auto |
50 |
79 |
65 |
37 |
10 |
50 |
65 |
37 |
10 |
5.0 |
50 |
10 |
avoid |
50 |
79 |
65 |
37 |
10 |
50 |
65 |
37 |
10 |
5.0 |
50 |
10 |
avoid-column |
50 |
79 |
92 |
37 |
10 |
50 |
92 |
37 |
10 |
5.0 |
50 |
10 |
avoid-page |
50 |
79 |
92 |
37 |
10 |
50 |
92 |
37 |
10 |
5.0 |
50 |
10 |
multicol_context |
50 |
12 |
65 |
37
11.1–12.1
|
10 |
50 |
65 |
37
11.1–12.1
|
10 |
5.0 |
50 |
10 |
paged_context |
50 |
12 |
65 |
37
11.1–12.1
|
10 |
50 |
65 |
37
11.1–12.1
|
10 |
5.0 |
50 |
10 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/break-inside