2013-12-09 18 views
10

根據W3.org,樣式page-break-after適用於塊級元素(http://www.w3.org/TR/2004/CR-CSS21-20040225/page.html#page-break-props運用「分頁-之前」發送給錶行(tr)

<tr>是塊級元素(根據該: http://www.htmlhelp.com/reference/html40/block.html,它是)

我這樣做,但是打印時分頁符不創建一個實際的分頁:

<table> 
    <tr><td>blah</td></tr> 
    <tr><td>blah</td></tr> 
    <tr style="page-break-after: always"><td>blah</td></tr> 
    <tr><td>blah</td></tr> 
    </table> 

我這樣做的正確方法?

如果<tr>不是塊級別的元素:我想如何實現這個分頁符?

注意:前面的代碼只是一個例子,但我想要做的是每隔5行放一個分頁符,所以如果你知道這種情況下的任何提示,將不勝感激

+1

打印功能在瀏覽器中執行不力;你會遇到各種不兼容。如果你是以編程方式構建表格,我建議將它切成更小的表格,每行5行,並在它們之間放置分頁符。 –

+0

將其切割成更小的表格將在「html版本」(打印前)中顯示:( – sports

+0

然後僅在打印時剪切它們... –

回答

11

裏面<head>,設置此樣式

<head> 
    <style> 
     @media print { 
      tr.page-break { display: block; page-break-before: always; } 
     } 
    </style> 
</head> 

這樣的話,它會這個錶行之前正確打印過程中產生分頁符。

<tr class="page-break"> 
</tr> 
+6

此外(爲了防止醜陋tds,因爲tr是顯示塊)我插入了一個空的tr,其中class'page-break'和height = 0。 – phikes

+0

你也可以使用僞元素來避免空tr的使用:'@media print { tr.page斷:前{ 內容: 「」; 顯示:塊;分頁-前:永遠; } }' –

+1

這實際上並不似乎工作或改變什麼,至少不在Chrome 50中。 –

2

The site you referenced指出<tr>也可以認爲是塊級元素,因爲它可以含有塊級元素」。 W3.orgMozilla docs都沒有聲明<tr>是塊級元素。

基於措辭和你的榜樣一些可能的解決方案

  1. ,我將確保細胞含有一個真正的塊級元素。以下是使用<h1><p>這兩個塊級別文本元素的示例。

    <tr style="page-break-after: always"><td><h1>Next Section</h1></td></tr> 
    <tr style="page-break-after: always"><td><p>This will be a new page.</p></td></tr> 
    
  2. 其他人報告過類似的問題,其中一種解決方案可能適用於您。

  3. 正如My Lister提到的,你可以attempt to catch the printing action或生成頁面的打印版本,將表脫離分開,以便您可以在每五行後獲得所需的分頁符。