CSS设定A4纸张大小
我需要在网络中模拟A4纸,并允许打印此页,因为它在浏览器(特别是Chrome)上显示。我将元素大小设置为21cm x
29.7cm,但是当我发送打印(或打印预览)时,它会裁剪页面。
body { margin: 0;
padding: 0;
background-color: #FAFAFA;
font: 12pt "Tahoma";
}
* {
box-sizing: border-box;
-moz-box-sizing: border-box;
}
.page {
width: 21cm;
min-height: 29.7cm;
padding: 2cm;
margin: 1cm auto;
border: 1px #D3D3D3 solid;
border-radius: 5px;
background: white;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
}
.subpage {
padding: 1cm;
border: 5px red solid;
height: 256mm;
outline: 2cm #FFEAEA solid;
}
@page {
size: A4;
margin: 0;
}
@media print {
.page {
margin: 0;
border: initial;
border-radius: initial;
width: initial;
min-height: initial;
box-shadow: initial;
background: initial;
page-break-after: always;
}
}
<div class="book">
<div class="page">
<div class="subpage">Page 1/2</div>
</div>
<div class="page">
<div class="subpage">Page 2/2</div>
</div>
</div>
我想我忘记了什么。但是会是什么呢?
- :剪贴页,双页( 这正是我需要的工作 )
- :完美运行。
- :信不信由你,这很完美!
- :打印预览时非常容易出错
回答:
我对此进行了更多研究,实际的问题似乎是在媒体规则下分配initial
给页面。如果没有在任何父元素上定义特定的长度值(在这种情况下,解析为…但实际上小于规则中定义的大小的任何值),则在Chrome中,似乎该元素会导致页面内容
导致相同的问题)。width``print``width: initial``.page
width``width:
initial``width: auto``@page
因此,不仅内容现在对于页面 了(大约 2cm
),而且页面填充也将比初始内容稍大 2cm
,以此类推(它似乎将内容渲染width: auto
为的宽度, ~196mm
然后按比例缩放整个内容直到〜的宽度, 210mm
但奇怪的是,相同的缩放比例应用于任何宽度小于的内容 210mm
。
要解决此问题,您只需在print
媒体规则中将A4纸的宽度和高度分配给html,
body或直接分配给A4纸宽度和高度.page
,在这种情况下,避免使用initial
关键字。
@page { size: A4;
margin: 0;
}
@media print {
html, body {
width: 210mm;
height: 297mm;
}
/* ... the rest of the rules ... */
}
以上是 CSS设定A4纸张大小 的全部内容, 来源链接: utcz.com/qa/436358.html