如何修复页脚使其位于页面末尾? (css 打印)

How to fix the footer to make it positioned at the end of the page? (css print)

我想在我网站印刷版的每一页上添加页眉和页脚,我使用了以下方法

@media print {
 /* the parent container */
 table.report-container {
      page-break-after:always;
  }
  /* the parent container */
  thead.report-header {
      display:table-header-group;
  }
  /* the footer container */
  tfoot.report-footer {
      display:table-footer-group;
  }
}

HTML代码如下:

<table class="report-container">
    <!-- the header -->
    <thead class="report-header">
        <tr>
            <th>
                <h1>Header</h1>
            </th>
        </tr>
    </thead>

    <tbody class="report-content">
        <tr>
            <td>
                <!-- body -->
            </td>
        </tr>
    </tbody>
    <!-- the footer -->
    <tfoot class="report-footer">
        <tr>
            <td>
                <h1>Footer</h1>
            </td>
        </tr>
    </tfoot>
</table>

这种方法的问题是,在最后一页中,页脚不会显示在页尾,除非页体已经填满整个页面。像下面这样:

我只需要找到一种方法来强制页脚始终显示在页面末尾。

您可以使用 %,因为它始终继承自 parent 元素。

如果您将 parent's 高度设置为 100% 并将页脚的 min-height 设置为 100%,那么它将起作用。

这是一个最小的可重现示例:

Html代码:

<header>
    this is header part
</header>
<section>
    this is content part
</section>
<footer>
    this is footer part
</footer>

css代码

html,
body {
    height: 100%;
}

header {
    border: 2px solid blue;
    text-align: center;
}

section {
    border: 2px solid red;
    min-height: 100%;
    text-align: center;
}

footer {
    border: 2px solid green;
    text-align: center;
}

Note: Here section's direct parent is body.

试试这个 CSS 印刷版。

.report-footer{
  position: fixed;
  bottom: 0;
  background:red;
  display: block;
  width:100%;
}
<table class="report-container">
    <thead class="report-header">
        <tr>
            <th>
                <h1>Header</h1>
            </th>
        </tr>
    </thead>

    <tbody class="report-content">
        <tr>
            <td>
                <!-- body -->
            </td>
        </tr>
    </tbody>
    <tfoot class="report-footer">
        <tr>
            <td>
                <h1>Footer</h1>
            </td>
        </tr>
    </tfoot>
</table>

足以确定 <table> 及其父项(最多 <body> and/or <html>)的尺寸,无需额外更改即可轻松完成:

html,
body,
table {
    height: 100%;
}

您可以在 @media print { ... } 中使用此代码。


代码片段:

html,
body,
table {
    height: 100%;
}

/* the parent container */
table.report-container {
    page-break-after: always;
}

/* the parent container */
thead.report-header {
    display: table-header-group;
}

/* the footer container */
tfoot.report-footer {
    display: table-footer-group;
}
<body style="min-height: 5in;">

  <table class="report-container">
      <!-- the header -->
      <thead class="report-header">
          <tr>
              <th>
                  <h1>Header</h1>
              </th>
          </tr>
      </thead>

      <tbody class="report-content">
          <tr>
              <td>
                  <!-- body -->
              </td>
          </tr>
      </tbody>
      <!-- the footer -->
      <tfoot class="report-footer">
          <tr>
              <td>
                  <h1>Footer</h1>
              </td>
          </tr>
      </tfoot>
  </table>

</body>