Fur*_*oSK 15 css printing-web-page css3 css-paged-media
当打印(或者,通常,在分页媒体上显示文档)时,是否可以重排文档元素,以便当某个元素(例如图像)转移到下一页因为它不适合实际页面上的可用空间时,它后面的元素会被移动到实际页面的剩余空间吗?
我试图达到类似于(或相同)LaTeX Floats的效果,但只使用CSS.
为了说明它,让我们说我们有这种情况:
Page 1 | Paragraph A (...) |
| Paragraph B (...) |
| _________________ |
| | Top of image A | |
|_|_________________|_|
---- page break -----
_____________________
Page 2 | | Rest of image A | |
| |_________________| |
| |
| Paragraph C (...) |
| Paragraph D (...) |
| ... |
|_____________________|
Run Code Online (Sandbox Code Playgroud)
使用一些基本的CSS(参见这个问题),实现这一点没有问题:
Page 1 | Paragraph A (...) |
| Paragraph B (...) |
| |
| |
|_____________________|
---- page break -----
_____________________
Page 2 | _________________ |
| | Image A (whole) | |
| | | |
| |_________________| |
| |
| Paragraph C (...) |
| Paragraph D (...) |
| ... |
|_____________________|
Run Code Online (Sandbox Code Playgroud)
但我真的需要的是这样的:
Page 1 | Paragraph A (...) |
| Paragraph B (...) |
| Paragraph C (...) |
| Paragraph D (...) |
|_____________________|
---- page break -----
_____________________
Page 2 | _________________ |
| | Image A (whole) | |
| | | |
| |_________________| |
| ... |
|_____________________|
Run Code Online (Sandbox Code Playgroud)
所以,基本上,我只是想填充所有留在实际页面上的剩余空间,其中包含以下元素image A(当然,只有它们适合它).
我正在进行一些CSS3研究,并希望看看Office编辑器是否可以完全被CSS样式取代,所以我不需要支持该解决方案(即,此时在某些浏览器中实现).我想知道的是它是否包含在任何CSS模块或构造中(即使它只是工作草案),所以我可以假设浏览器将来会支持它.
我已经搜索过了
规格并没有发现任何东西,但仍然有可能我只是忽略了一些东西(或根本不理解它),所以经过两天的谷歌搜索我认为是时候问这里:-)
这完全是在黑暗中进行的尝试,但它至少可以让你找到正确的方向......
结合page(n) 伪元素选择器、float / float-modifier属性以及可能的CSS4 父选择器可能会提供某种解决方案。
以下是一些行为的示例:
/* CSS3 GCPM */
#image-a::page(2) {
page-break-before: auto;
float: top next-page;
margin-bottom: -320px; /* Assuming the image height is 320px */
}
/* CSS4 Parent Selector */
$#image-a ::page(2) {
page-break-before: auto;
float: top next-page;
margin-bottom: -320px; /* Assuming the image height is 320px */
}
Run Code Online (Sandbox Code Playgroud)
这基本上表明,如果 image-a 实际上换行到第二页,则应对其应用浮动,将其发送到下一页的顶部。根据浏览器选择呈现的方式,您可能会得到您正在寻找的结果(希望如此):
page-break-before属性强制该float属性应用于整个元素(或者父选择器完成它的工作)float允许margin其他内容占用其空间我知道这是一个真正的延伸,不会起作用,但也许它会引发一系列思考,让你想出一个更可靠的解决方案:)