表格行前的分页符

Jas*_*n C 2 html css printing css-tables

我有一个表,我想在打印时在某些TR之前强制分页,因此我四处搜索,发现将“ page-break-before”应用于表行(tr)似乎很简单:将display设置为,blockpage-break-before照常使用。但是,它似乎不起作用(至少在Chrome 59,Windows中不起作用)。例如:

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
  tr.break-here {
    display: block;
    page-break-before: always;
  }
</style>
</head>
<body>
<table>
  <tr class="break-here"><td colspan="2">&nbsp;
  <tr><td colspan="2">section
  <tr><td>a<td>b
  <tr><td>a<td>b
  <tr><td>a<td>b
  <tr class="break-here"><td colspan="2">&nbsp;
  <tr><td colspan="2">section
  <tr><td>a<td>b
  <tr><td>a<td>b
  <tr><td>a<td>b
  <tr class="break-here"><td colspan="2">&nbsp;
  <tr><td colspan="2">section
  <tr><td>a<td>b
  <tr><td>a<td>b
  <tr><td>a<td>b
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

打印时,所有这三个部分都在同一页上,但是应该是三个单独的页面。

有人建议使用伪元素,但我没有用。还有建议确保TR的TD包含块级元素,因此在该示例中,我尝试将空div放入相关单元格中,并且也保持不变。

还有如何应用CSS分页符来打印具有很多行的表?,我尝试过的地方:

  • 答案:没有效果:
    • tr.break-here { display:block; page-break-after:always; }
    • tr.break-here { page-break-after:always; }

我在这里做错了什么?我该怎么做呢?我也有些困惑,因为链接问题的答案似乎很受欢迎,评论中没有提到任何问题。不能将表分为三个表,因为我需要所有页面上的列宽(自动适应复杂内容)一致。

Jas*_*n C 8

我根据此答案和一些实验找到了一个解决方案,但我不知道它为什么起作用:

<tr>
    <td>
        <div></div>
        <div style="page-break-before:always"></div>
Run Code Online (Sandbox Code Playgroud)

以下所有内容都很重要:

  • 上没有分页符样式tr
  • 单元格必须至少包含两个div。
  • 除第一个格外的任何div必须为page-break-before:always

如果单元格仅包含一个div,则该行不起作用。与该答案不同的是,clear:both第三分区似乎也不重要。

我找不到一个不涉及在tr中添加div的可行解决方案(例如,使用伪元素)。

所以这就是我现在正在做的事情,尽管我不介意有人解释这里发生的事情,或者更重要的是,为什么原始链接问题()display:block; page-break-before:always;上的解决方案tr对我不起作用。