如何将div高度设置为所选打印纸的100%?

Bjö*_*n C 11 css printing

如何将高度设置为所选打印纸的100%?

的CSS

width: 100%;
height: 100%;
margin: auto;
margin-top: 0px !important;
border: 1px solid;
Run Code Online (Sandbox Code Playgroud)

当我在Google Chrome浏览器中打印时,我打印的div仅会与div中的内容一样高。
我能解决这个问题吗?
是否可以使div达到所选纸张尺寸的高度?

UXC*_*ODA 10

我发现最简单的方法是使用视口单位和page-break-after:always. 这适用于打印多页。

我建议像这样构建你的 HTML:

<div class="someContainerClass">
  <section id="pageOne"></section>
  <section id="pageTwo"></section>
  <section id="pageThree"></section>
</div>
Run Code Online (Sandbox Code Playgroud)

并使用此 CSS:

section {
  width: 100vw;
  height: 100vh;
  page-break-after: always;
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以在需要的页面中包含您的内容。

  • 仅当您在页面设置中禁用边距时,100vh 才有效。否则你的元素将会溢出页面。 (2认同)

yez*_*zzz 7

看看媒体查询。

@media print {
    html, body {
        height: 100%;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以你可以改变输出而不会弄乱你的屏幕布局


Sys*_*dox 7

如果在末尾添加分页符,则元素将延伸到最后一页的底部。如果您希望页脚出现在最后一页的底部,这将特别有用:

<div style='position:relative;overflow:hidden;background:#ffe!important'>
    <div style='margin-bottom:200px'>
        <p>Content here</p>
    </div>
    <div style='page-break-before:always'></div>
    <div style='position:absolute;bottom:0'>Footer</div>
</div>
Run Code Online (Sandbox Code Playgroud)

这不会给你一个额外的空白页——只要你在分页符之后没有任何内容(绝对定位的页脚不计算在内,除非它以某种方式溢出到第二页)。注意延伸到身体之外的边缘!


Spl*_*luf 6

width: 100%;
height:100%;
position:absolute;
top:0px;
bottom:0px;
margin: auto;
margin-top: 0px !important;
border: 1px solid;
Run Code Online (Sandbox Code Playgroud)

另外,如果绝对位置不起作用,您也可以使用position:fixed;进行相同操作。这将起作用,但可能会对您的布局造成更多损害,具体取决于所有内容的排列方式:)

我将对其进行编辑以使其更加明显,因此...如果您使用的是固定位置并且您有多个页面,则它们只会在另一个页面的顶部,这样就不合适了……但是为了要获得绝对位置正确的结果,您必须记住,此处的css样式将占据高度的100%,但这是其父对象的高度...因此,如果父对象是主体,则只需添加 html, body{ height:100% };