打印大表的CSS

时间:2011-03-04 20:10:47

标签: css printing

我有一个相当大的表,它被分成带有间隔行的较小部分

<table>
<tr><th>Heading</th>...</tr>
<tr><td>Content</td>...</tr>
<tr><td>Content</td>...</tr>
<tr><td>Content</td>...</tr>
<tr class='spacer_row'><td></td></tr>
<tr><th>Heading</th>...</tr>
<tr><td>Content</td>...</tr>
<tr><td>Content</td>...</tr>
<tr><td>Content</td>...</tr>
<tr class='spacer_row'><td></td></tr>
<tr><th>Heading</th>...</tr>
<tr><td>Content</td>...</tr>
<tr><td>Content</td>...</tr>
<tr><td>Content</td>...</tr>
<tr class='spacer_row'><td></td></tr>
.........
.........
</table>

我正在创建print.css,如果需要,我想在spacer_row强制分页。 我如何使用分页符css属性?

2 个答案:

答案 0 :(得分:1)

此css规则将确保在每个间隔行之后开始新页面:

.spacer_row
{
   page-break-after: always;
}

请参阅page-break-after

答案 1 :(得分:0)

尝试一下,虽然我自己没有测试过。我在div,p和其他标签上使用它的页面上有很好的结果。可能会工作:

CSS (告诉浏览器避免在tbody标记内分页)

tbody {page-break-inside:avoid}

HTML (在tbody标记中包装每组行并保留您的间隔行)

<table>
  <tbody>
    <tr><th>Heading</th>...</tr>
    <tr><td>Content</td>...</tr>
    <tr><td>Content</td>...</tr>
    <tr><td>Content</td>...</tr>
    <tr class='spacer_row'><td></td></tr>
  </tbody>
  <tbody>
    <tr><th>Heading</th>...</tr>
    <tr><td>Content</td>...</tr>
    <tr><td>Content</td>...</tr>
    <tr><td>Content</td>...</tr>
    <tr class='spacer_row'><td></td></tr>
  </tbody>
  <tbody>
    <tr><th>Heading</th>...</tr>
    <tr><td>Content</td>...</tr>
    <tr><td>Content</td>...</tr>
    <tr><td>Content</td>...</tr>
    <tr class='spacer_row'><td></td></tr>
  </tbody>
  <tbody>
    .........
    .........
  </tbody>
</table>

这是一个很好的开始测试。

在生产中,我会避​​免实际放置page-break-inside:避免在所有tbody标签上使用css,而是创建一个可以应用于tbody或任何容器标签的css类。这就是原因:我在IE中发现了一个错误(一直到IE8),如果你嵌套容器,那个CSS和IE被迫在内部分页,IE似乎会截断页面的其余部分。

不幸的是,这个w3schools.com page表示支持分页内部的唯一浏览器是opera。希望将来有更好的支持