break-inside

Thebreak-insideCSSproperty sets how page, column, or region breaks should behave inside a generated box. If there is no generated box, the property is ignored.

Try it

Syntax

css
/* 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;

Each possible break point (in other words, each element boundary) is affected by three properties: thebreak-aftervalue of the previous element, thebreak-beforevalue of the next element, and thebreak-insidevalue of the containing element.

To determine if a break must be done, the following rules are applied:

  1. If any of the three concerned values is aforced break value(always,left,right,page,column,orregion), it has precedence. If more than one of them are such a break, the value of the element that appears the latest in the flow is used. Thus, thebreak-beforevalue has precedence over thebreak-aftervalue, which in turn has precedence over thebreak-insidevalue.
  2. If any of the three concerned values is anavoid break value(avoid,avoid-page,avoid-region,oravoid-column), no such break will be applied at that point.

Once forced breaks have been applied, soft breaks may be added if needed, but not on element boundaries that resolve in a correspondingavoidvalue.

Values

auto

Allows, but does not force, any break (page, column, or region) to be inserted within the principal box.

avoid

Avoids any break (page, column, or region) from being inserted within the principal box.

avoid-page

Avoids any page break within the principal box.

avoid-column

Avoids any column break within the principal box.

avoid-region

Avoids any region break within the principal box.

Page break aliases

For compatibility reasons, the legacypage-break-insideproperty should be treated by browsers as an alias ofbreak-inside.This ensures that sites usingpage-break-insidecontinue to work as designed. A subset of values should be aliased as follows:

page-break-inside break-inside
auto auto
avoid avoid

Formal definition

Initial valueauto
Applies toblock-level elements
Inheritedno
Computed valueas specified
Animation typediscrete

Formal syntax

break-inside =
auto|
avoid|
avoid-page|
avoid-column|
avoid-region

Examples

Avoiding breaking inside a figure

In the following example we have a container that contains an<h1>spanning all columns (achieved usingcolumn-span: all) and a series of paragraphs laid out in multiple columns usingcolumn-width: 200px.We also have a<figure>containing an image and a caption.

By default, it is possible for you to get a break between the image and its caption, which is not what we want. To avoid this, we have setbreak-inside: avoidon the<figure>,which causes them to always stay together.

HTML

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

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

Result

Specifications

Specification
CSS Fragmentation Module Level 3
#break-within
CSS Regions Module Level 1
#region-flow-break
CSS Multi-column Layout Module Level 1
#break-before-break-after-break-inside

Browser compatibility

BCD tables only load in the browser

See also