不同的浏览器对page-break-inside: avoid
. 在不同的文章中提出了以下限制:
- 如果文档树的父级或祖父级带有
display:flex
or display:grid
,则避免分页符将不起作用。
- 如果父元素有
display:inline-block
,avoid
则不起作用。
- 在某些情况下,父元素需要
position:relative
该值avoid
在子元素中起作用。(具体规则未知。)
- 在某些情况下,父元素和需要避免破坏的元素都需要
position:relative
该值avoid
起作用。(具体规则未知。)
- 父元素不能有
display: inline-block
.
- 元素不能有
display:table-cell
.
简而言之,样式@media print
应该避免使用float
, flex
, grid
,如果你需要使用. 为了获得与不同浏览器的最佳兼容性,请尝试定义从根到父的整个树,以及不应该中断的元素。position:absolute
position:sticky
page-break-inside: avoid
display:block
display:inline-block
page-break-inside: avoid
上述例外都不是任何规范的一部分,因此这些只是浏览器实现中的错误或限制。
另请注意,即使最新的规范更喜欢break-inside: avoid
而不是page-break-inside: avoid
现实世界的浏览器支持仍然很糟糕。我建议同时声明:
.nobreak
{
page-break-inside: avoid;
break-inside: avoid
}