break-before
CSS
property sets how page, column, or region breaks should behave before a generated box. If there is no generated box, the property is ignored.
/* 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: 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:
always
,
left
,
right
,
page
,
column
,或
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).
avoid
,
avoid-page
,
avoid-region
,或
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
值。
break-before
property is specified as one of the keyword values from the list below.
auto
Allows, but does not force, any break (page, column, or region) to be inserted right before the principal box.
avoid
Avoids any break (page, column, or region) from being inserted right before 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.
avoid-page
Avoids any page break right before the principal box.
page
Forces a page break right before the principal box.
left
Forces one or two page breaks right before the principal box, whichever will make the next page into a left page.
right
Forces one or two page breaks right before the principal box, whichever will make the next page into a right page.
recto
Forces one or two page breaks right before 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 before 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 left right in a right-to-left spread.)
avoid-column
Avoids any column break right before the principal box.
column
Forces a column break right before the principal box.
avoid-region
Avoids any region break right before the principal box.
region
Forces a region break right before the principal box.
For compatibility reasons, the legacy
page-break-before
property should be treated by browsers as an alias of
break-before
. This ensures that sites using
page-break-before
continue to work as designed. A subset of values should be aliased as follows:
| page-break-before | break-before |
|---|---|
auto
|
auto
|
left
|
left
|
right
|
right
|
avoid
|
avoid
|
always
|
page
|
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.
| 初始值 |
auto
|
|---|---|
| 适用于 | block-level elements |
| 继承 | no |
| 计算值 | 如指定 |
| 动画类型 | discrete |
auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region
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-before: column
on the
<h2>
elements to force a column break before each one, meaning that you end up with an
<h2>
neatly at the top of each column.
<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>
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 Fragmentation Module Level 3
The definition of 'break-before' in that specification. |
候选推荐 |
添加
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 1
The definition of 'break-before' in that specification. |
工作草案 |
Extends the property to handle region breaks. Adds the
avoid-region
and
region
keywords.
|
|
CSS Multi-column Layout Module
The definition of 'break-before' in that specification. |
工作草案 |
Initial definition. Extends the CSS 2.1
page-break-before
property to handle both page and column breaks.
|
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Supported in Multi-column Layout | Chrome 完整支持 50 | Edge 完整支持 12 | Firefox 完整支持 65 | IE 完整支持 10 |
Opera
完整支持
37
|
Safari 不支持 No | WebView Android 完整支持 50 | Chrome Android 完整支持 50 | Firefox Android 完整支持 65 |
Opera Android
完整支持
37
|
Safari iOS 不支持 No | Samsung Internet Android 完整支持 5.0 |
always
Experimental
|
Chrome 不支持 No | Edge 不支持 No | Firefox 不支持 No | IE 不支持 No | Opera 不支持 No | Safari 不支持 No | WebView Android 不支持 No | Chrome Android 不支持 No | Firefox Android 不支持 No | Opera Android 不支持 No | Safari iOS 不支持 No | Samsung Internet Android 不支持 No |
avoid-column
|
Chrome 不支持 No | Edge 不支持 12 — 79 | Firefox 不支持 No | IE 完整支持 10 | Opera 不支持 No | Safari 不支持 No | WebView Android 不支持 No | Chrome Android 不支持 No | Firefox Android 不支持 No | Opera Android 不支持 No | Safari iOS 不支持 No | Samsung Internet Android 不支持 No |
column
|
Chrome 完整支持 51 | Edge 完整支持 12 | Firefox 不支持 No | IE 完整支持 10 | Opera 完整支持 38 | Safari 不支持 No | WebView Android 完整支持 51 | Chrome Android 完整支持 51 | Firefox Android 不支持 No | Opera Android 完整支持 41 | Safari iOS 不支持 No | Samsung Internet Android 完整支持 5.0 |
完整支持
不支持
实验。期望将来行为有所改变。
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Supported in Paged Media | Chrome 完整支持 50 | Edge 完整支持 12 | Firefox 完整支持 65 | IE 完整支持 10 |
Opera
完整支持
37
|
Safari 完整支持 10 | WebView Android 完整支持 50 | Chrome Android 完整支持 50 | Firefox Android 完整支持 65 |
Opera Android
完整支持
37
|
Safari iOS 完整支持 10 | Samsung Internet Android 完整支持 5.0 |
always
|
Chrome 不支持 No | Edge 不支持 12 — 79 | Firefox 完整支持 65 | IE 完整支持 10 | Opera 不支持 11.1 — 12.1 | Safari 不支持 No | WebView Android 完整支持 50 | Chrome Android 不支持 No | Firefox Android 完整支持 65 | Opera Android 不支持 No | Safari iOS 不支持 No | Samsung Internet Android 不支持 No |
page
and
avoid-page
|
Chrome 完整支持 50 | Edge 完整支持 12 | Firefox 完整支持 65 | IE 完整支持 10 | Opera 不支持 11.1 — 12.1 | Safari 完整支持 10 | WebView Android 完整支持 50 | Chrome Android 完整支持 50 | Firefox Android 完整支持 65 | Opera Android 完整支持 37 | Safari iOS 完整支持 10 | Samsung Internet Android 完整支持 5.0 |
recto
and
verso
|
Chrome 不支持 No | Edge 不支持 No | Firefox 不支持 No | IE 不支持 No | Opera 不支持 No | Safari 不支持 No | WebView Android 不支持 No | Chrome Android 不支持 No | Firefox Android 不支持 No | Opera Android 不支持 No | Safari iOS 不支持 No | Samsung Internet Android 不支持 No |
完整支持
不支持
box-decoration-break
break-after
break-before
break-inside
orphans
widows