【问题标题】:Place a div in absolute position inside media page print area在媒体页面打印区域内的绝对位置放置一个 div
【发布时间】:2014-03-03 15:48:46
【问题描述】:

我需要打印一个固定大小的页面,里面有一个绝对位置的div:

.page 
{
    width: 21cm;
    min-height: 29.7cm;
    padding: 1.2cm;
    margin: 1cm auto;
    border: 1px #D3D3D3 solid;
    border-radius: 5px;
    background: white;
    box-shadow: 0 0 5px rgba(0, 0, 0, 0.1);
    position: relative;
}

要打印的媒体类:

@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;
    position: relative;
  }
}

div:

<div id="proc_comp">Printed by Computer</div>

#proc_comp
{
   position: absolute;
   left: 190px;
   bottom: 15px;
   font-size: 0.65em;
}

但是div,当我尝试在浏览器中打印时,它并没有出现在与HTML布局相同的位置,为什么?

谢谢。

【问题讨论】:

    标签: html css


    【解决方案1】:

    出现错误的定位是因为您在 #proc_comp 规则中使用基于像素的放置,而页面使用的是 A4 格式(非基于像素的布局)。您可以尝试使用以下替代方法

    #proc_comp {
      position: absolute;
      left: 50%;
      top: 50px;
      margin-left: -5em;
      margin-top: -1em;
    }
    

    您可能需要调整负边距以适应显示消息的高度和宽度,使其显示为居中。

    【讨论】:

    • 您好,谢谢,也许我可以使用 px 为单位的页面大小?
    • @Patrick 我永远不会混合像素和打印尺寸,因为有一些不可预测的因素,如 dpi 设置等可能会对计算产生影响。尝试使用“pt”而不是“px”,就像我在这个 jsFiddle 中所做的那样:jsfiddle.net/Moonbird_IT/N5S5A(使用右下方面板上的“打印”来查看定位)。
    • 如果只使用 px 我已经使用 px 将所有元素放置在页面中了吗?我可以将cm转换为px并解决问题吗?
    • @Patrick 这里有各种类似的讨论,比如this onethis one,它们都以某种方式讨论了最佳印刷实践。 This great article 还为设计打印机友好的 CSS 样式表提供了很多背景信息,作为结论,我会说最好更喜欢 pt 或 percent 并且不要使用像素进行打印。
    猜你喜欢
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多