Bootstrap 列中的自动分页

sie*_*fer 5 css page-break multiple-columns page-break-inside twitter-bootstrap-3

我正在为 Web 应用程序制作打印样式表。该应用程序使用引导程序。每个页面都应该是可打印的,并且应该尽可能多地去除空白。

我的问题涉及以下 HTML 代码:

<div class="row">
  <div class="col-xs-6">
    <div class="line">...</div>
    <div class="line">...</div>
    <div class="line">...</div>
  </div>
  <div class="col-xs-6">
    <div class="line">...</div>
    <div class="line">...</div>
    <div class="line">...</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我有一个两列布局,每列都有几行。有没有办法在列中的行之间启用分页符?

列可以有很多行,我想避免整个 div 转移到新页面。相反,我想在 div 的行之间有一个分页符。

我认为我面临的主要问题是我的表格是逐列构造的,而不是像普通 HTML 表格那样逐行构造的。

hen*_*nry 9

您是对的:因为这是作为 css 列而不是作为<table>.

但解决方案并不太棘手。让我们想想你想要什么:一个@media screen有三行的网格,@media print每行都放在自己的页面上。如果每一行都分组在一个元素中,您可以使用page-break-after和/或page-break-beforeCSS 属性将每一行放在自己的页面上。在您的标记中,每一行都是

.row .col-x .line

这既妨碍了您的打印格式,也不是语义。让我们把每一行都变成一个.row

@import 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css';
@media print {
  .rows-print-as-pages .row {
    page-break-before: always;
  }
  /* include this style if you want the first row to be on the same page as whatever precedes it */
  /*
  .rows-print-as-pages .row:first-child {
    page-break-before: avoid;
  }
  */
}
Run Code Online (Sandbox Code Playgroud)
<div class="container rows-print-as-pages">
  <div class="row">
    <div class="col-xs-6">first row left</div>
    <div class="col-xs-6">first row right</div>
  </div>
  <div class="row">
    <div class="col-xs-6">second row left</div>
    <div class="col-xs-6">second row right</div>
  </div>
  <div class="row">
    <div class="col-xs-6">third row left</div>
    <div class="col-xs-6">third row right</div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

(在这里,没有 . 的休息时间不会出现在正确的位置.container。根据您页面的其余部分,.container可能没有必要。)

检查@media print样式有点不方便,但是可以通过在codepen 中制作演示,选择“调试”视图,然后查看打印预览或另存为 pdf 来完成。这是上述代码段的 codepen 调试视图的链接