gpt4 book ai didi

HTML - 如何使用 thead/tfoot 打印页码

转载 作者:行者123 更新时间:2023-12-04 12:25:39 25 4
gpt4 key购买 nike

我尝试在我的 HTML 报告中使用 counter(page) 但没有成功。
我阅读了许多有关此主题的 StackOverflow 页面,但从未找到可行的解决方案!

环境

  • Chrome(最新版本:70.0.3538.110)
  • 火狐(最新版本:63.0.3)

  • 工作流程
  • 将代码复制到 HTML 页面
  • 用 Chrome/Firefox 打开它
  • 打印
  • 在预览中,数字未正确计算

  • 问题 ?
  • 你有关于这个主题的解决方案(如果可能的话,只使用 HTML/CSS)?
  • 2018 年主流浏览器不支持当前的 CSS3 标准?
  • 也许不完全支持 thead/pageBreak 组合?

  • 谢谢 !

    PS:请发布整个解决方案(不是部分 HTML/CSS 代码)!

    我的 HTML 演示

    <html>
    <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Style-Type" content="text/css">
    <title>HTML CSS Page counter</title>
    <style>
    table.report-container {
    page-break-after:always;
    }
    thead.report-header {
    display:table-header-group;
    }
    tfoot.report-footer {
    display:table-footer-group;
    }
    @media print{
    @page {
    size: A4 portrait;
    }
    .pageBreak {
    page-break-before: always;
    }
    span.page-number:after {
    content: "Page " counter(page);
    }
    }
    @media screen{
    span.page-number:after {
    content: "All pages";
    }
    }
    </style>
    </head>
    <body>
    <table class="report-container">
    <thead class="report-header">
    <tr>
    <th class="report-header-cell">
    <div class="header-info">
    <table border="1" width="100%">
    <tr height="100px">
    <td align="center" valign="middle">Header title</td>
    <td><span class="page-number"></td>
    </tr>
    </table>
    </div>
    </th>
    </tr>
    </thead>
    <tfoot class="report-footer">
    <tr>
    <td class="report-footer-cell">
    <div class="footer-info">
    <table border="1" width="100%">
    <tr height="50px">
    <td><p>Other info</p></td>
    </tr>
    </table>
    </div>
    </td>
    </tr>
    </tfoot>
    <tbody class="report-content">
    <tr>
    <td class="report-content-cell">
    <div class="main">
    First page with some data.
    <div class="pageBreak"></div>
    Second page with some data.
    <div class="pageBreak"></div>
    Third page with some data.
    <div class="pageBreak"></div>
    Fourth page with some data.
    <div class="pageBreak"></div>
    </div>
    </td>
    </tr>
    </tbody>
    </table>
    </body>
    </html>

    最佳答案

    并非所有浏览器都支持 content:counter(page);到目前为止,我发现的唯一一个是 Firefox。但它不适用于您的代码示例,因为您使用的是 table s。具体来说,page-break-before不(不应该)在 table 中工作. Chrome 可以,但 Firefox 不行。

    出于演示目的,我尝试在 css 中重新创建表格并对结果进行分页。

    您需要将结果复制到新的 .html 文件中进行测试。

    body {
    width: 300px;
    }

    #header {
    border: 1px solid;
    overflow: hidden;
    }

    #header>div {
    float: left;
    width: 50%;
    line-height: 100px;
    text-align: center;
    }

    #foot {
    border: 1px solid;
    }

    #header p {
    margin: 0;
    }

    #header #page-number {
    border-left: 1px solid;
    width: calc(50% - 1px);
    }

    #page-number:after {
    content: "All pages";
    }

    @media print {
    .pageBreak {
    page-break-before: always;
    padding-bottom: 120px;
    }
    #content {
    padding-top: 120px;
    }
    #header {
    display: block;
    position: fixed;
    top: 0pt;
    left: 0pt;
    right: 0pt;
    }
    #page-number:after {
    content: "Page " counter(page);
    counter-increment: page;
    }
    #foot {
    display: block;
    position: fixed;
    bottom: 0pt;
    }
    }
    <div id="header">
    <div id="header-title">
    <p>Header title</p>
    </div>
    <div id="page-number"></div>
    </div>
    <div id="content">
    First page with some data.
    <div class="pageBreak"></div>
    Second page with some data.
    <div class="pageBreak"></div>
    Third page with some data.
    <div class="pageBreak"></div>
    Fourth page with some data.
    <div class="pageBreak"></div>
    </div>
    <div id="foot">
    Other info.
    </div>

    关于HTML - 如何使用 thead/tfoot 打印页码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53482268/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com