如何将CSS计数器增量用于动态页码

wztqucjr  于 2022-11-27  发布在  其他
关注(0)|答案(6)|浏览(172)

我试图添加页码到我的html打印输出,并遇到了Counter Increment。我试图使用它为我的网页,但它只显示Page 1每一次。帮助将不胜感激。
我已经尝试过其他类似的解决方案,但到目前为止都不起作用。我的情况不同,因为我在表头内部使用它。
第一个
例如:在所有页面上打印相同的Page 1的示例

预期答案

ctrl + p打印后,应在所有页面上打印增量Page 1Page 2Page 3编号

长话短说

Ctrl + P →打印当前窗口→在页面底部(当前窗口)添加页脚,如Page <counter>counter是从1开始的数字。
所以网页会像这样

PS:计数器不应在页面上可见😀

zvms9eto

zvms9eto1#

所以我从来没有能够得到这个工作为我的情况下。我知道其他情况下可能工作与上述答案,但我不能让前端单独生成动态页码。
我使用了后端的帮助,在我的例子中是PHP,并使用了一个名为wkhtmltopdf的插件。
这解决了我的问题,https://stackoverflow.com/a/13496899/6000966
我能够从前端删除逻辑,并将其放在后端,让它处理动态页码。
我建议如果HTML页面使用来自后端的动态数据,应该这样做。

另一方面,静态页面应使用上述答案。

cbeh67ev

cbeh67ev2#

我在一篇俄语文章中找到了这段代码,它在每一页上添加了页码:

@page:right{
  @bottom-right {
    content: counter(page);
  }
}

@page:left{
  @bottom-left {
    content: counter(page);
  }
}

下面代码可以显示总页数,如“第3页,共120页”。

@page:left{
  @bottom-left {
    content: "Page " counter(page) " of " counter(pages);
  }
}
umuewwlo

umuewwlo3#

counter-reset: page;应用于包含所有页码元素的父元素。另请注意,根据您的代码片段,您似乎需要.page-numberclass),而不是#page-numberid)。id属性在整个文档中是唯一的,而class属性可以在同一标识符下重复。
第一个

0s7z1bwu

0s7z1bwu4#

不确定您的预期输出,但如果您尝试使用此代码片段,我认为它确实满足了您的要求[即增加页码]。代码是从[此原始示例] 1重新改编的
第一个

4dbbbstv

4dbbbstv5#

首先,回答这个问题是一个很大的挑战。其次,为什么其他的例子不起作用呢?这是因为计数器只在每个元素上触发。当你打印时,浏览器不会创建<thead>的新示例,至少不会创建到你网站的源代码。它只是简单地显示它。然而,在打印之前,可以绕过这个行为('beforeprint'),更改DOM并使用Javascript重新创建打印页面。现在,在每个页面上都有一个新的<table>,其中包含<thead>的新示例。现在,计数器开始工作。在打印此代码后,会自动将DOM重置为打印前的状态。用户体验保持不变。
使用const pixelHeightA4 = 1000;,你可以指定多少像素适合一个a4。当我测试的时候,1000非常接近。
使用const heightOfTHead = 160;可以指定a4尺寸的表格标题的高度。
我希望代码中的注解可以解释这个过程。
第一个
希望这有帮助,如果没有,请评论!

编辑1:

它根据每个<tr>的行高自动计算一个a4可以容纳的行数。
您可以在here上进行测试(在chrome上进行测试)

mf98qq94

mf98qq946#

[更新的答案]
试试这个。它工作正常,就像你希望的那样
第一个

相关问题