Jas*_*n C 2 html css printing css-tables
我有一个表,我想在打印时在某些TR之前强制分页,因此我四处搜索,发现将“ page-break-before”应用于表行(tr)似乎很简单:将display设置为,block并page-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">
<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">
<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">
<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; }我在这里做错了什么?我该怎么做呢?我也有些困惑,因为链接问题的答案似乎很受欢迎,评论中没有提到任何问题。不能将表分为三个表,因为我需要所有页面上的列宽(自动适应复杂内容)一致。
我根据此答案和一些实验找到了一个解决方案,但我不知道它为什么起作用:
<tr>
<td>
<div></div>
<div style="page-break-before:always"></div>
Run Code Online (Sandbox Code Playgroud)
以下所有内容都很重要:
tr。page-break-before:always。如果单元格仅包含一个div,则该行不起作用。与该答案不同的是,clear:both第三分区似乎也不重要。
我找不到一个不涉及在tr中添加div的可行解决方案(例如,使用伪元素)。
所以这就是我现在正在做的事情,尽管我不介意有人解释这里发生的事情,或者更重要的是,为什么原始链接问题()display:block; page-break-before:always;上的解决方案tr对我不起作用。