CSS 分页媒体 - break-inside 属性



CSS 分页媒体 break-inside 属性用于在内容处于打印页面模式时断开元素内的页面、列或区域。

可能的值

  • auto − 默认值。它允许根据碎片上下文在元素内部进行中断。
  • avoid − 避免元素内部的中断,强制内容保持在单个片段中。
  • avoid-page − 避免元素内部的中断,专门用于分页媒体。
  • avoid-column − 避免元素内部的中断,专门用于多列布局。
  • avoid-region − 避免元素内部的中断,特别是 CSS 区域。截至目前,这是实验性的,预计将来会发生变化。

适用于

块级元素。

DOM 语法


breakInside = "auto|avoid|avoid-page|avoid-column|avoid-region";

应用以下规则来确定是否必须进行中断:

  • 作为强制中断值的三个相关值(always、left、right、page、column 或 region)中的任何一个都具有优先权。如果有多个分页符属性,我们将选择序列中最后一个属性。后续是 : break-before 优先于 break-afterbreak-after 优先于 break-inside
  • 如果三个相关值中的任何一个是避免分页符值(如 avoid、avoid-page、avoid-region 或 avoid-column),则不会在该位置添加分页符。

分页符别名

Web 浏览器将旧版 page-break-inside 属性视为 break-inside 属性的别名。这确保了使用 page-break-inside 的网站顺利运行。break-inside 属性的以下值应相等。

分页符 break-inside
auto auto
avoid avoid

CSS break-inside - auto 值

以下示例演示了在打印页面时,break-inside: auto 属性会断开列内的段落 -


<html>
<head>
<style>
	 	ul {
	 	 	 column-width: 150px;
	 	 	 column-gap: 20px;
	 	}
	 	li {
	 	 	 list-style-type: none;
	 	}
	 	p {
	 	 	 break-inside: auto;	
	 	 	 border: 3px solid black;
	 	 	 padding: 5px;
	 	 	 margin: 5px;
	 	}
	 	button {
	 	 	 background-color: violet;
	 	 	 padding: 5px;
	 	}
</style>
</head>
<body>
	 	<h3>Click on below button to see the effect when you print the page.</h3>
	 	<button onclick="printPage()">Print Page</button>
	 	<ul>
	 	 	 <li> <p>This is first paragraph.</p></li>
	 	 	 <li><p>This is second paragraph.</p></li>
	 	 	 <li><p>This is third paragraph.</p></li>
	 	 	 <li><p>This is fourth paragraph.</p></li>
	 	 	 <li><p>This is fifth paragraph.</p></li>
	 	 	 </ul>
	 	<script>
	 	 	 function printPage() {
	 	 	 	 	window.print();
	 	 	 }
	 	</script>
</body>
</html> 	 		

CSS break-inside - avoid 值

以下示例演示了 break-inside: avoid 属性可避免在打印页面时在段落内分页 -


<html>
<head>
<style>
	 	ul {
	 	 	 column-width: 150px;
	 	 	 column-gap: 20px;
	 	}
	 	li {
	 	 	 list-style-type: none;
	 	}
	 	p {
	 	 	 break-inside: avoid;	
	 	 	 border: 3px solid black;
	 	 	 padding: 5px;
	 	 	 margin: 5px;
	 	}
	 	button {
	 	 	 background-color: violet;
	 	 	 padding: 5px;
	 	}
</style>
</head>
<body>
	 	<h3>Click on below button to see the effect when you print the page.</h3>
	 	<button onclick="printPage()">Print Page</button>
	 	<ul>
	 	 	 <li> <p>This is first paragraph.</p></li>
	 	 	 <li><p>This is second paragraph.</p></li>
	 	 	 <li><p>This is third paragraph.</p></li>
	 	 	 <li><p>This is fourth paragraph.</p></li>
	 	 	 <li><p>This is fifth paragraph.</p></li>
	 	 	 </ul>
	 	<script>
	 	 	 function printPage() {
	 	 	 	 	window.print();
	 	 	 }
	 	</script>
</body>
</html> 	 	 	 	

CSS break-inside - avoid-page 值

下面的示例演示了 break-inside: avoid-page 属性在打印页面时避免了元素内部的分页符 -


<html>
<head>
<style>
	 	div {
	 	 	 break-inside: avoid-page;
	 	 	 border: 1px solid #ccc;
	 	 	 padding: 10px;
	 	 	 margin: 10px;
	 	}
	 	button {
	 	 	 background-color: violet;
	 	 	 padding: 5px;
	 	}
</style>
</head>
<body>
	 	<p>Click on below button to see the effect when you print the page.</p>
	 	<button onclick="printPage()">Print Page</button>

	 	<div><p>This is a paragraph 1. It will be displayed on first page.</p></div>
	 	<div class="avoid-break-page"><p>This is a paragraph 2. It will be displayed on first page.</p></div>
	 	<div><p>This is a paragraph 3. It will be displayed on first page.</p></div>
	 	<div><p>This is a paragraph 4. It will be displayed on first page.</p></div>
	 	<script>
	 	 	 function printPage() {
	 	 	 	 	window.print();
	 	 	 }
	 	</script>
</body>
</html> 	 		

CSS break-inside - avoid-column 值

以下示例演示了 break-inside: avoid-column 属性可避免在打印页面时在节内出现分列符 -


<html>
<head>
<style>
	 	main {
	 	 	 column-width: 200px;
	 	 	 column-gap: 10px;
	 	}
	 	section {
	 	 	 width: 200px;
	 	 	 height: 100px;
	 	 	 border: 2px solid black;
	 	 	 margin: 10px;
	 	 	 padding: 5px;
	 	 	 break-inside: avoid-column;
	 	}
	 	button {
	 	 	 background-color: violet;
	 	 	 padding: 5px;
	 	}
</style>
</head>
<body>
	 	<p>Click on below button to see the effect when you print the page.</p>
	 	<button onclick="printPage()">Print Page</button>
	 	<main>
	 	 	 <section>
	 	 	 	 	<h3>Column 1</h3>
	 	 	 	 	<p>This is a column 1.</p>
	 	 	 </section>
	 	 	 <section>
	 	 	 	 	<h3>Column 2</h3>
	 	 	 	 	<p>This is a column 2.</p>
	 	 	 </section>
	 	 	 <section>
	 	 	 	 	<h3>Column 3</h3>
	 	 	 	 	<p>This is a column 3.</p>
	 	 	 </section>
	 	 	 <section>
	 	 	 	 	<h3>Column 4</h3>
	 	 	 	 	<p>This is a column 4.</p>
	 	 	 </section>
	 	</main>
	 	<script>
	 	 	 function printPage() {
	 	 	 	 	window.print();
	 	 	 }
	 	</script>
</body>
</html>