2011-03-04 40 views
1

我有一個相當大的表,即分離成較小的部分與間隔行打印CSS的大表

<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屬性?

+0

更新:試驗了一下之後就想起了。不同瀏覽器對print css的支持各不相同。更重要的是,瀏覽器似乎不允許在單個表格中有條件地定位分頁符*,所以我認爲我必須編寫新的標記,每個部分都是一個單獨的表格 – 2011-03-07 20:44:05

回答

1

這CSS規則將確保一個新的頁面將在每次間隔一行之後開始:

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

page-break-after

+0

我不希望它「始終」,只是如果需要的話,它被放置在'spacer_row' – 2011-03-04 20:19:45

+0

@RisingSun - 然後只把它放在那些行上。您可以爲這些行創建一個特殊的CSS類並將其添加到它們。 – Oded 2011-03-04 20:21:01

+0

該表正在從數據庫生成,我不會*知道*分頁將在哪裏。 3 - 5節很容易放在頁面上 – 2011-03-04 20:24:55

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> 

這是一個很好的開始測試。

在生產中,我會避​​免實際上放入頁面中斷:避免在所有tbody標籤上使用css,而是創建一個可應用於tbody或任何容器標籤的css類。原因如下:我在IE中發現了一個錯誤(一直到IE8),如果你將那些CSS和IE強制分頁的容器嵌套在一起,IE似乎會截斷頁面的其餘部分。

不幸的是,這個w3schools.com page表示支持page-break-inside的唯一瀏覽器是opera。這裏希望在未來有更好的支持