Page-break-inside:避免不工作

Kat*_*itz 9 html css printing wordpress page-break-inside

我有一个用于我的(Wordpress)网站的打印样式表,我想要在单个页面上打印图像而不是在页面上拆分.在某些情况下,甚至文本行都在页面之间分割.我已经包含img {page-break: avoid;)在我的打印样式表中,但没有运气.我找到了一些以前的答案,但它们有点老了.

是否有可靠的方法在单个页面上打印中等大小的图像而不是在页面上拆分?为什么文本行跨页?

图片分为两页

跨越页面的线条

网站:http://74.220.217.211/housing-developments/grafton-townhomes/

相关文章:

Kri*_*ter 15

可能是 img 元素的父元素具有样式:

display: flex
Run Code Online (Sandbox Code Playgroud)

然后闯入不起作用。

例如,如果您将父元素显示样式更改为:

display: block
Run Code Online (Sandbox Code Playgroud)

然后它会起作用。


Mik*_*nen 6

不同的浏览器对page-break-inside: avoid. 在不同的文章中提出了以下限制:

  • 如果文档树的父或祖父带有display:flexdisplay:grid,则避免分页符将不起作用。
  • 如果父元素有display:inline-blockavoid则不起作用。
  • 在某些情况下,父元素需要position:relativeavoid在子元素中起作用。(具体规则未知。)
  • 在某些情况下,父元素和需要避免中断的元素都需要position:relative该值avoid起作用。(具体规则未知。)
  • 父元素不得具有display: inline-block.
  • 该元素不得具有display:table-cell.

总之,@media print风格或许应该避免使用floatflexgridposition:absoluteposition: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
}
Run Code Online (Sandbox Code Playgroud)


Ris*_*ker 0

尝试这个:

.site-container, .site-inner (heck body tag possibly) {position:relative;}

p {
    page-break-inside: avoid;
    position: relative; 
}
Run Code Online (Sandbox Code Playgroud)

检查这个小提琴

将其添加到您的印刷媒体中

我刚刚在 Chrome 中查看了这个,它看起来很好,减去也需要这个的图像:

img {
    page-break-before: auto;
    page-break-after: auto; 
    page-break-inside: avoid;
    display: block;
}
Run Code Online (Sandbox Code Playgroud)

最后,Wordpress 有这个,但实际上不确定它是否有帮助......

 <!--nextpage-->
Run Code Online (Sandbox Code Playgroud)