Web/CSS/break-after

From Get docs


The break-after CSS property sets how page, column, or region breaks should behave after a generated box. If there is no generated box, the property is ignored.

/* Generic break values */
break-after: auto;
break-after: avoid;
break-after: always;
break-after: all;

/* Page break values */
break-after: avoid-page;
break-after: page;
break-after: left;
break-after: right;
break-after: recto;
break-after: verso;

/* Column break values */
break-after: avoid-column;
break-after: column;

/* Region break values */
break-after: avoid-region;
break-after: region;

/* Global values */
break-after: inherit;
break-after: initial;
break-after: unset;

Each possible break point (in other words, each element boundary) is affected by three properties: the break-after value of the previous element, the break-before value of the next element, and the break-inside value 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 a forced break value (always, left, right, page, column, or region), it has precedence. If more than one of them are such a break, the one of the element that appears the latest in the flow is taken (i.e., the break-before value has precedence over the break-after value, which itself has precedence over the break-inside value).
  2. If any of the three concerned values is an avoid break value (avoid, avoid-page, avoid-region, or avoid-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 corresponding avoid value.

Syntax

The break-after property is specified as one of the keyword values from the list below.

Values

Generic break values

auto
Allows, but does not force, any break (page, column, or region) to be inserted right after the principal box.
avoid
Avoids any break (page, column, or region) from being inserted right after the principal box.
always '
Forces a page break right after the principal box. The type of this break is that of the immediately-containing fragmentation context. If we are inside a multicol container then it would force a column break, inside paged media (but not inside a multicol container) a page break.
all '
Forces a page break right after the principal box. Breaking through all possible fragmentation contexts. So a break inside a multicol container, which was inside a page container would force a column and page break.

Page break values

avoid-page
Avoids any page break right after the principal box.
page
Forces a page break right after the principal box.
left
Forces one or two page breaks right after the principal box, whichever will make the next page into a left page.
right
Forces one or two page breaks right after the principal box, whichever will make the next page into a right page.
recto '
Forces one or two page breaks right after the principal box, whichever will make the next page into a recto page. (A recto page is a right page in a left-to-right spread or a left page in a right-to-left spread.)
verso '
Forces one or two page breaks right after the principal box, whichever will make the next page into a verso page. (A verso page is a left page in a left-to-right spread or a right page in a right-to-left spread.)

Column break values

avoid-column
Avoids any column break right after the principal box.
column
Forces a column break right after the principal box.

Region break values

avoid-region '
Avoids any region break right after the principal box.
region '
Forces a region break right after the principal box.

Page break aliases

For compatibility reasons, the legacy page-break-after property should be treated by browsers as an alias of break-after. This ensures that sites using page-break-after continue to work as designed. A subset of values should be aliased as follows:

page-break-after break-after
auto auto
left left
right right
avoid avoid
always page

The always value of page-break-* was implemented by browsers as a page break, and not as a column break. Therefore the aliasing is to page, rather than the always value in the Level 4 spec.


Formal definition

Initial value auto
Applies to block-level elements
Inherited no
Computed value as specified
Animation type discrete

Formal syntax

auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region

Examples

Breaking into neat columns

In the following example we have a container that contains an <h1> spanning all columns (achieved using column-span: all) and a series of <h2>s and paragraphs laid out in multiple columns using column-width: 200px.

By default, the subheadings and paragraphs were laid out rather messily because the headings were not in a uniform place. However, we used break-after: column on the <p> elements to force a column break after each one, meaning that you end up with an <h2> neatly at the top of each column.

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.

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

p {
  line-height: 1.5;
  break-after: column;
}

article {
  column-width: 200px;
  gap: 20px;
}

Result

Specifications

Specification Status Comment
CSS Fragmentation Module Level 3The definition of 'break-after' in that specification. Candidate Recommendation Adds the recto and verso keywords. Changes the media type of this property from paged to visual. Defines the breaking algorithm with different kinds of breaks.
CSS Regions Module Level 1The definition of 'break-after' in that specification. Working Draft Extends the property to handle region breaks. Adds the avoid-region and region keywords.
CSS Multi-column Layout ModuleThe definition of 'break-after' in that specification. Working Draft Initial definition. Extends the CSS 2.1 page-break-after property to handle both page and column breaks.

Browser compatibility

Support in multi-column layout

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
Supported in Multi-column Layout Chrome

Full support 50

Edge

Full support 12

Firefox

No support No

IE

Full support 10

Opera Full support 37


Full support 37


No support 11.1 — 12.1


Safari

No support No

WebView Android

Full support 50

Chrome Android

Full support 50

Firefox Android

No support No

Opera Android Full support 37


Full support 37


No support 11.1 — 12.1


Safari iOS

No support No

Samsung Internet Android

Full support 5.0

always Chrome

No support No

Edge

No support No

Firefox

No support No

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

No support No

Chrome Android

No support No

Firefox Android

No support No

Opera Android

No support No

Safari iOS

No support No

Samsung Internet Android

No support No

avoid-column Chrome

No support No

Edge

No support 12 — 79

Firefox

No support No

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

No support No

Chrome Android

No support No

Firefox Android

No support No

Opera Android

No support No

Safari iOS

No support No

Samsung Internet Android

No support No

column Chrome

Full support 50

Edge

Full support 12

Firefox

No support No

IE

Full support 10

Opera No support 11.1 — 15


No support 11.1 — 15


Full support 37


Safari

No support No

WebView Android

Full support 50

Chrome Android

Full support 50

Firefox Android

No support No

Opera Android No support 11.1 — 14


No support 11.1 — 14


Full support 37


Safari iOS

No support No

Samsung Internet Android

Full support 5.0

Legend

Full support  
Full support
No support  
No support


Support in paged media

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
Supported in Paged Media Chrome

Full support 50

Edge

Full support 12

Firefox

Full support 65

IE

Full support 10

Opera Full support 37


Full support 37


No support 11.1 — 12.1


Safari

Full support 10

WebView Android

Full support 50

Chrome Android

Full support 50

Firefox Android

Full support 65

Opera Android Full support 37


Full support 37


No support 11.1 — 12.1


Safari iOS

Full support 10

Samsung Internet Android

Full support 5.0

always Chrome

No support No

Edge

No support 12 — 79

Firefox

No support No

IE

Full support 10

Opera

No support 11.1 — 12.1

Safari

No support No

WebView Android

Full support 50

Chrome Android

No support No

Firefox Android

No support No

Opera Android

No support No

Safari iOS

No support No

Samsung Internet Android

No support No

page and avoid-page Chrome

Full support 50

Edge

Full support 12

Firefox

Full support 65

IE

Full support 10

Opera

No support 11.1 — 12.1

Safari

Full support 10

WebView Android

Full support 50

Chrome Android

Full support 50

Firefox Android

Full support 65

Opera Android

Full support 37

Safari iOS

Full support 10

Samsung Internet Android

Full support 5.0

recto and verso Chrome

No support No

Edge

No support No

Firefox

No support No

IE

No support No

Opera

No support No

Safari

No support No

WebView Android

No support No

Chrome Android

No support No

Firefox Android

No support No

Opera Android

No support No

Safari iOS

No support No

Samsung Internet Android

No support No

Legend

Full support  
Full support
No support  
No support