break-inside - CSS: Cascading Style Sheets 编辑
The break-inside
CSS property sets how page, column, or region breaks should behave inside a generated box. If there is no generated box, the property is ignored.
/* 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: 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:
- If any of the three concerned values is a forced 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-before
value has precedence over thebreak-after
value, which in turn has precedence over thebreak-inside
value. - If any of the three concerned values is an avoid 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 corresponding avoid
value.
Syntax
The break-inside
property is specified as one of the keyword values from the list below.
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 legacy page-break-inside
property should be treated by browsers as an alias of break-inside
. This ensures that sites using page-break-inside
continue 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 value | auto |
---|---|
Applies to | block-level elements |
Inherited | no |
Computed value | as specified |
Animation type | discrete |
Formal syntax
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 using column-span: all
) and a series of paragraphs laid out in multiple columns using column-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 set break-inside: avoid
on the <figure>
, which causes them to always stay together.
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://www.wenjiangs.com/wp-content/uploads/2020/mozilla/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;
}
Result
Specifications
Specification | Status | Comment |
---|---|---|
CSS Fragmentation Module Level 3 The definition of 'break-inside' in that specification. | Candidate Recommendation | No change. |
CSS Regions Module Level 1 The definition of 'break-inside' in that specification. | Working Draft | Extends the property to handle region breaks. |
CSS Multi-column Layout Module The definition of 'break-inside' in that specification. | Working Draft | Initial definition. |
Browser compatibility
BCD tables only load in the browser
Notes on compatibility
Prior to Firefox 65, the older property of page-break-inside
will work in Firefox to prevent breaks in columns, as well as pages. Add both properties for backwards compatibility.
For older WebKit-based browsers, the prefixed property -webkit-column-break-inside
can be used to control column breaks.
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论