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``.pagewidth``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

回到顶部