【问题标题】:How to force page-break-before to work inside a table?如何强制分页前在表格内工作?
【发布时间】:2012-08-17 09:10:28
【问题描述】:

有没有办法在表格中的行之前强制分页?我发现可以通过用 DIV 替换表格元素来完成,但我不想这样做,因为这意味着要重写很多很多文件,可能需要一周时间。我发现的所有其他解决方案都不适合我。有人可以帮帮我吗?

【问题讨论】:

  • 您可以使用tr:first-child { margin-top: 20px } CSS 在表格第一行前添加一个空格。
  • 我看不出这有什么帮助...:/
  • 你说得对,不能在TR 上使用它。请改用表格填充。即:table { padding-top: 20px; } 或仅一行:table { padding-top: 1em; }
  • 我不确定我们是否相互理解 :) 只是添加一些空间并不能解决我的问题,因为表格是动态的 :(
  • 动态是什么意思?你能发布生成的 HTML 吗?

标签: css html-table page-break


【解决方案1】:
<div style="border:2px solid black; border-radius:10px; width:100%; margin-left:auto; margin-right:auto">
<table width="100%" align="center" style="table-layout: fixed; border:1px solid transparent;">
<?
 while($row = $result->fetch_assoc()){?>
<tr style="background:#FFFFFF">';

    <td style='padding-left:5px; padding-right:5px;' width=100><? echo $row['znacka'];?></td>
    <td style='padding-left:5px; padding-right:5px;'><? echo $row['nazev'];?></td>
    <td style='padding-left:5px; padding-right:5px;' width=90 align=center><? echo $row['zn_zatrideni'];?></td>
    <td style='padding-left:5px; padding-right:5px;' width=90 align=right><? echo number_format($row['mnozstvi'],2,'.',' ');?></td>
    <td style='padding-left:5px; padding-right:5px;' width=40 align=center><? echo $row['mj'];?></td>
    <td style='padding-left:5px; padding-right:5px;' width=100 align=right><? if($row['mnozstvi']!=0) echo number_format($row['cena']/$row['mnozstvi'],0,'.',' '); else echo '0';?></td>
<?  if($odd==true){?>
        <td class="stred_b"  width=100 align=right><? echo number_format(($row['cena_min']/1000) ,0 ,'.' ,$oddelovac_tisicu);?></td>
        <td class="stred_g"  width=100 align=right><? echo number_format(($row['cena']/1000) ,0 ,'.' ,$oddelovac_tisicu);?></td>
        <td class="stred_r"  width=100 align=right><? echo number_format(($row['cena_max']/1000) ,0 ,'.' ,$oddelovac_tisicu);?></td>
<?  } else{?>
        <td class="svetle_b"  width=100 align=right><? echo number_format(($row['cena_min']/1000) ,0 ,'.' ,$oddelovac_tisicu);?></td>
        <td class="svetle_g"  width=100 align=right><? echo number_format(($row['cena']/1000) ,0 ,'.' ,$oddelovac_tisicu);?></td>
        <td class="svetle_r"  width=100  align=right><? echo number_format(($row['cena_max']/1000) ,0 ,'.' ,$oddelovac_tisicu);?></td>          
    <?} $odd=!$odd; ?>
</tr>
<?}?>
<tr>
<th colspan=3></th><th colspan=3 align=right style="background:black; color:white" >Celková cena stupně IZ:</th>
<th class="svetle_b"  align=right><? echo number_format(($celkovaCenaMin/1000) ,0 ,'.' ,$oddelovac_tisicu);?></th>
<th class="svetle_g"  align=right><? echo number_format(($celkovaCena/1000) ,0 ,'.' ,$oddelovac_tisicu);?></th>
<th class="svetle_r"  align=right><? echo number_format(($celkovaCenaMax/1000) ,0 ,'.' ,$oddelovac_tisicu);?></th>
</tr>
</table>
</div>
<?}?>       

【讨论】:

  • 您可以简单地添加page-break-before:always of TR 元素的STYLE 属性来在该元素之前放置一个分页符。
  • 我已经尝试过了,但只有当我将它添加到 TABLE 元素中时才有效...如果我将它添加到 TR,它只会在表格和其余部分之前中断一次桌子没有破损。
  • 然后尝试该行的第一个单元格。例如:#TheRow&gt;TD:first-child {page-break-before:always;}#TheRow&gt;TH:first-child {page-break-before:always;}。请注意,这必须在 CSS 中指定。
猜你喜欢
  • 2019-06-25
  • 1970-01-01
  • 2014-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 2013-02-14
相关资源
最近更新 更多