117

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

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。

4

1 回答 1

74

我能想到的唯一方法是使用以下 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 ,列表等...)。

这里有一些有用的讨论:“什么是最有用的media="print"特定的、跨浏览器兼容的 CSS 属性?

参考:

于 2010-04-15T22:56:05.897 回答