有没有可能让Safari在打印页面时重复表头?

20

在Safari中是否可以在每个打印页面上重复表头?

这段代码在Firefox中有效,但在Safari中无效:

<table>
  <thead>
    <tr>
      <td>Header1</td>
      <td>Header2</td>
    </tr>
  </thead>

  <!-- lots of rows -->
</table>

编辑:

以下内容并不能解决问题,因此它不可能是IE所具有的同样的 bug:

thead { display:table-header-group; }
3个回答

5

回答自己的问题:

在谷歌搜索并没有得到正确的答案后,我认为目前不存在可以实现它的方法。也许Safari的以后版本会包括它。


1
您可以考虑在向下滚动表格时定期重新输出 thead。如果表格非常长,在屏幕上查看时,这可能会很有益处,因为标题很快就会滚动出屏幕。但如果您不想在屏幕上显示它,则可以在重新打印的标题中添加一个类,将其隐藏在屏幕上,并仅在打印样式表中显示它们。

那需要你知道表格的断点位置,但实际上这是不可能的。(因为如果插入新行,断点可能会移动。) - Georg Schölly
如果你的行高都相同(但实际上可能不是这样),那么通过进行一些快速测试,你可以相当准确地预测断点会出现在哪里。 - Scott Cranfill

0
您可能想考虑为页面的打印版本创建CSS样式表。如果选择这种方法,请使用“position:fixed;”。“fixed”定位的元素将出现在每个打印的页面上。
棘手的部分是,任何定位元素(即位置属性不是“static”)都会脱离文档流。这使得其他(正常流动的)元素与固定元素对齐变得困难。
根据您问题中的信息,我建议将整个表格包裹在一个固定元素中(或创建一个类,如.printedTable,其中position属性设置为fixed)。这样,表格结构将在每个打印的页面上重复出现。
祝您好运。 A.

只需重复表的标题,而不是整个表格,因为它比单个页面大。 - Georg Schölly
我会创建一个“固定”的标题元素,使其在每一页上重复,并将页面顶部边距设置为足够大的值,以防止页面/表格内容呈现在固定的标题下方。然后,可以在每个打印页面上重复打印标题,并打印出表格内容。 - Ahmed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接