使用 HTML 和 CSS 在第一个打印页面上显示不同的页眉

问题描述 投票:0回答:4

是否可以通过 HTML 和/或 CSS 的任意组合,在第一个 printed 页面上显示一个标题,然后在每个后续 printed 页面上显示 不同的 标题? 我知道

@media print
CSS 标签仅在打印网站时显示某些内容,但这并不能让我在多个页面上拥有不同的标题。

感谢任何帮助,谢谢!

html css printing web header
4个回答
3
投票

十二年后我可以回答你的问题:)

以下是在第一个打印页面上显示与后续页面不同的标题的解决方案:

@media print {

  .header, .footer {
      position: fixed;
  }
  
  .header, .header-cover {
    display:flex;
  }

  .header {
      top: 100%;
  }
  
  .header, .header-space {
      height: 5rem;
  }
  
  .footer, .footer-space {
    height: 4rem;
  }
  
  .footer {
      bottom: 0;
  }
}
<body>
<!--Here the HTML of the first header (displayed on landing page)-->
<header class="header-cover">
    <img class="logo-big"
         src="https://picsum.photos/150/100" />
    <div class="right">
        Header 1
    </div>
</header>

  <!-- Here the HTML of the repeated header (on others pages)-->
<header class="header">
   <img class="logo-big"
         src="https://picsum.photos/200/100" />
    <div class="right">
        Repeated Header 
    </div>
</header>
<table>
    <thead>
    <tr>
        <td>
            <!--place holder for the fixed-position header-->
            <div class="header-space">&nbsp;</div>
        </td>
    </tr>
    </thead>

    <tbody>
    <tr>
        <td>
            <!--*** CONTENT GOES HERE ***-->
            <h1>Title</h1>
            <p class="content">A very long text....</p>
        </td>
    </tr>
    </tbody>

    <tfoot>
    <tr>
        <td>
            <!--place holder for the fixed-position footer-->
            <div class="footer-space">&nbsp;</div>
        </td>
    </tr>
    </tfoot>
</table>
<!-- Repeated Footer -->
<footer class="footer">
    <p>
        Text footer
    </p>
</footer>
<button onclick="window.print()">Test Here</button>
</body>


1
投票

来自 http://css-discuss.incutio.com/wiki/Printing_Headers

如果您想要完整的、CSS 控制的打印 页眉和页脚,您需要 等到浏览器实现支持 CSS3 分页媒体候选 推荐。它明确规定 对于设施但在一个相当 不同的方式,使用边距框。

可能是因为...

...CSS 位置描述:固定,[is]即 “……就印刷媒体而言 类型,该框在每个 页,并且相对于固定 页...”[第 9.3.1 节]

...但文章说它现在不起作用。

但是,为了帮助你,后面的文章说:

在正文上设置上边距(用于 示例)仅适用于第一个 页。


1
投票

我能看到如何做到这一点的唯一方法是使用不同的标题并强制

page-break
s。

那么

PAGE 1 

   HEADER 1 //display only on print

   CONTENT....

   PAGE BREAK DIV //display only on print

PAGE 2 

   HEADER 2 //display only on print

   CONTENT....

   PAGE BREAK DIV //display only on print

etc..

您的标题将获得一类

printHeaders

你的分页符 div 类似于

<div class="pageBreak"></div>

在你的 CSS 中,你会有类似的东西

  .printHeaders, .pageBreak  {display:none;}

@media print {
  .printHeaders, .pageBreak  {display:block;}
  .pageBreak  {page-break-before:always;}
}

0
投票

要完成 @ester44 的帖子(效果很好),您可以将文件放入文件中,除了您不想在网页上看到的页眉和页脚的

@media print
disply: none

示例:

header.header, header.header-cover, footer.footer {
    display: none;
}

@media print {

    header.header, footer.footer {
        position: fixed;
    }

    header.header, header.header-cover {
        display:flex;
    }

    header.header {
        top: 100%;
    }

    header.header, header.header-space {
        height: 5rem;
    }

    footer.footer, footer.footer-space {
        height: 4rem;
    }

    footer.footer {
        bottom: 0;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.