【问题标题】:How to make a header/footer and content for print so that header/footer repeat at each page如何制作页眉/页脚和打印内容,以便在每一页重复页眉/页脚
【发布时间】:2016-08-08 15:48:11
【问题描述】:

我有一个页眉 div 一个页脚和一个内容。 我想要做的是打印页面,以便在每个页面上显示页眉和页脚,但内容显示在它们之间。 但问题是内容重叠或隐藏在页眉和页脚下。 这是我到目前为止的示例:https://jsfiddle.net/2ogx55p2/

我尝试使用 contentDiv 的边距并将位置更改为绝对或相对。但没有任何结果。

帮助会非常好。谢谢

.headerDiv {
  width: 100%;
  background-color: cadetblue;
  height: 100px;
}
.contentDiv {} .reportFooter {
  bottom: 0px;
  width: 100%;
  background-color: gray;
  display: block;
  height: 100px;
}
@media print {
  .headerDiv {
    position: fixed;
    top: 0px;
    width: 100%;
    background-color: cadetblue;
    height: 100px;
  }
  .contentDiv {
    z-index: 100;
  }
  .reportFooter {
    position: fixed;
    bottom: 0px;
    width: 100%;
    background-color: gray;
    display: block;
    height: 100px;
  }
}
<header class="headerDiv"></header>
<div class="contentDiv">
  <h1>1 test Test TEst TESt TEST</h1>
  <h1>2 test Test TEst TESt TEST</h1>
  <h1>3 test Test TEst TESt TEST</h1>
  <h1>4 test Test TEst TESt TEST</h1>
  <h1>5 test Test TEst TESt TEST</h1>
  <h1>6 test Test TEst TESt TEST</h1>
  <h1>7 test Test TEst TESt TEST</h1>
  <h1>8 test Test TEst TESt TEST</h1>
  <h1>9 test Test TEst TESt TEST</h1>
  <h1>12 test Test TEst TESt TEST</h1>
  <h1>13 test Test TEst TESt TEST</h1>
  <h1>14 test Test TEst TESt TEST</h1>
  <h1>15 test Test TEst TESt TEST</h1>
  <h1>16 test Test TEst TESt TEST</h1>
  <h1>17 test Test TEst TESt TEST</h1>
  <h1>18 test Test TEst TESt TEST</h1>
  <h1>19 test Test TEst TESt TEST</h1>
  <h1>20 test Test TEst TESt TEST</h1>
  <h1>21 test Test TEst TESt TEST</h1>
  <h1>22 test Test TEst TESt TEST</h1>
  <h1>23 test Test TEst TESt TEST</h1>
  <h1>24 test Test TEst TESt TEST</h1>
  <h1>25 test Test TEst TESt TEST</h1>
  <h1>26 test Test TEst TESt TEST</h1>
</div>
<footer class="reportFooter"></footer>

【问题讨论】:

  • 如果给header加上一个固定的位置,内容就看不到了,就到顶部了。尝试“top:100px”让内容停留在它的位置
  • @Jonasw 我已经这样做了,但在接下来的页面中它再次重叠。

标签: html css


【解决方案1】:

把它作为一个 flex 的父容器。

* {
  margin: 0;
  padding: 0;
  border: none;
}
.headerDiv,
.contentDiv,
.reportFooter {
  width: 100%;
}
.headerDiv {
  background-color: cadetblue;
}
.reportFooter {
  background-color: gray;
}
body {
  display: flex;
  flex-direction: column;
}
.headerDiv,
.reportFooter {
  flex: 0 0 100px;
}
.contentDiv {
  flex: 1000 0;
  min-height: calc(100vh - 200px);
}
<header class="headerDiv"></header>
<div class="contentDiv">
  <h1>1 test Test TEst TESt TEST</h1>
  <h1>2 test Test TEst TESt TEST</h1>
  <h1>3 test Test TEst TESt TEST</h1>
  <h1>4 test Test TEst TESt TEST</h1>
  <h1>5 test Test TEst TESt TEST</h1>
  <h1>6 test Test TEst TESt TEST</h1>
  <h1>7 test Test TEst TESt TEST</h1>
  <h1>8 test Test TEst TESt TEST</h1>
  <h1>9 test Test TEst TESt TEST</h1>
  <h1>12 test Test TEst TESt TEST</h1>
  <h1>13 test Test TEst TESt TEST</h1>
  <h1>14 test Test TEst TESt TEST</h1>
  <h1>15 test Test TEst TESt TEST</h1>
  <h1>16 test Test TEst TESt TEST</h1>
  <h1>17 test Test TEst TESt TEST</h1>
  <h1>18 test Test TEst TESt TEST</h1>
  <h1>19 test Test TEst TESt TEST</h1>
  <h1>20 test Test TEst TESt TEST</h1>
  <h1>21 test Test TEst TESt TEST</h1>
  <h1>22 test Test TEst TESt TEST</h1>
  <h1>23 test Test TEst TESt TEST</h1>
  <h1>24 test Test TEst TESt TEST</h1>
  <h1>25 test Test TEst TESt TEST</h1>
  <h1>26 test Test TEst TESt TEST</h1>
</div>
<footer class="reportFooter"></footer>

【讨论】:

  • 谢谢,但是使用这个 CSS,他的页脚只显示在最后一页而不是两个页面上
  • 我认为这不能在 css 上完成。您可以尝试使用 css page-break-before 插入块:总是;下一页,但这不是自动的。
猜你喜欢
  • 2013-12-01
  • 2020-02-06
  • 2021-01-18
  • 2011-11-01
  • 2022-01-15
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 2011-12-08
相关资源
最近更新 更多