【问题标题】:Print styles: How to ensure image doesn't span a page break打印样式:如何确保图像不跨越分页符
【发布时间】:2011-02-08 14:26:10
【问题描述】:

在编写打印样式表时,有没有办法确保图像始终只在一个页面上,而不是跨越多个页面。图像比页面小得多,但根据文档流,它们最终位于页面底部并被拆分。我看到的行为示例如下:

Page 1 |                    |
       |  (text text text)  |
       |  (text text text)  |
       |  ________________  |
       | | Top of image   | |
       |____________________|
       ------page break------
        ____________________
Page 2 | | Rest of image  | |
       | |________________| |
       |         …          |

我想要什么

Page 1 |                    |
       |  (text text text)  |
       |  (text text text)  |
       |                    |
       |                    |
       |____________________|
       ------page break------
        ____________________
Page 2 |  ________________  |
       | | Full image     | |
       | |                | |
       | |________________| |
       |         …          |

我一直在抱怨 LaTeX 中的浮点数,在这里我要求相同的功能......可以这样做吗?我不一定担心它在所有浏览器中都能正常工作,因为这通常只是我正在编写的一次性文档,以转换为 PDF。

【问题讨论】:

  • 为 ASCII 艺术图的出色使用点赞 :)
  • @NickG 非常同意,非常棒的 ASCII 图!

标签: css image printing print-style


【解决方案1】:

我能想到的唯一方法是使用以下 CSS 规则之一(或可能更多):

img {
    page-break-before: auto; /* 'always,' 'avoid,' 'left,' 'inherit,' or 'right' */
    page-break-after: auto; /* 'always,' 'avoid,' 'left,' 'inherit,' or 'right' */
    page-break-inside: avoid; /* or 'auto' */
}

我记得这些声明仅适用于块级元素(因此您还必须在图像上定义 display: block;,或者使用某种包装容器并将规则应用于该元素(无论它在段落、div、span、列表等)。

这里有一些有用的讨论:“What are most usefule media="print" specific, cross-browser compatible CSS properties?

参考资料:

【讨论】:

  • 是的,这行得通。 (page-break-inside:avoid)。现在我想起了为什么 LaTeX 浮动是一种痛苦。
  • @notJim 只有花车?
  • 这个解释非常合乎逻辑,但由于某种原因,它不适用于我的 Firefox 54 的 HTML5 文件。也许只是一个错误,因为它适用于 Internet Explorer 11...
  • page-break-inside - CSS | MDN 是专门针对此缺陷的页面 ;)
  • @Wolf 页面有变化吗?还是我错过了什么?为什么这在带有 FF54 的 HTML5 中不起作用?
猜你喜欢
  • 2021-05-11
  • 2010-12-08
  • 2011-07-07
  • 2015-05-15
  • 2010-10-12
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 2012-04-27
相关资源
最近更新 更多