Bootstrap 3-打印布局并在每个网格列之后中断


78

如果您使用此示例(请在此处查看:http : //www.bootply.com/93816

<div class="container">
  <div class="row">
    <div class="col-md-6">Column1</div>
    <div class="col-md-6">Column2</div>
  </div>
</div>

当您对生成的页面进行打印预览时,似乎会导致列堆叠/断开(好像浮点已删除),而不是在通常的网格布局中显示它们。

我看过@media printbootstrap.css的各个部分,但看不到与之相关的任何内容div

有谁知道如何避免这种情况?


7
IIRC这是由于页面仅跨过几百个“像素”(约500像素)引起的,这意味着通常用于电话/平板电脑的其他媒体查询也适用于页面打印
Bojangles 2013年

Answers:


126

Bojangles的评论使我朝着正确的方向前进,所以我将回答我自己的问题。

使用http://getbootstrap.com/css/#grid-options的“ xs”大小网格列用于“额外的小型设备电话(<768px)”,Bootstrap可以按预期打印。

<div class="container">
  <div class="row">
    <div class="col-xs-6">Column1</div>
    <div class="col-xs-6">Column2</div>
  </div>
</div>

2
可以解决它,但希望有正确的方法来解决。使用xs尺寸,会变得挑剔,这将使它很难在较小的手机上阅读...包括iPhone。
Nestor 2014年

6
我尝试了这个,但是没有用。使用bootstrap 3.1
Alexis

2
谢谢,您今天才救了我的命:)
sonlexqt 2014年

2
感谢尝试1:我用COL-XS它的工作 尝试2:在风景模式COL-SM +打印还曾 尝试3 :横向模式COL-MD +打印还曾 尝试4 横向模式还曾COL-LG +打印 尝试5 肖像模式下的col-lg打印损坏尝试6肖像模式下的 col-md打印损坏---所有这些变化可能是由于我的div设置不均匀所致
vijay 2015年

4
正如@vijay所说,它将在打印模式下使用col-xs,是否可以更改此设置?我需要在大型设备(col-lg)上打印页面吗?
阿纳斯2015年

33

解决方案必须在元素上,而不是页面本身上。您也不应该依赖col-xs -...,因为它们是用于小屏幕/设备的。

问题在于页面本身的像素很小,因此bootstrap认为它需要应用xs样式。

Bootstrap团队无法解决该问题,该问题与https://code.google.com/p/chromium/issues/detail?id=273306相关

Bootstrap解决方案是模糊地记录这种“古怪”行为https://github.com/twbs/bootstrap/issues/12078

我认为,应该有一个col-print -...布局类集,这样,超小字体和印刷版可以共存。

我的临时解决方案如下:

@media print {
  [class*="col-sm-"] {
    float: left;
  }
}

您可以使用col-print,在我们的例子中,我们使用的是sm,而不是xs,因为我们希望xs阻止布局,这就是为什么将这些类用于打印不起作用的原因。


这很好,但不完整。为了使这项工作,您还必须将这些行复制到您的打印样式表。
内森·亚瑟

@NathanArthur,您的链接已断开。
改革


链接仍然断开。
史蒂夫·伯恩

22

基于Gerard解决方案,您可以像这样使用bootstrap mixin .make-grid(),因此打印不会降到xs大小

@media print {
  .make-grid(sm);
}

或生成的CSS(如果您不喜欢使用更少的话):

@media print {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}

我正在使用Bootstrap版本4.3.1,并使用此方法的修改版本对我有用:使用@media print,我仅将百分比属性应用于.col-sm-1至.col-sm-12,因为其他类在Bootstrap 4中不使用它们。现在,我只需要为可变宽度列找到一个类似的解决方案,即当.col-sm-auto和col一起使用时。我不希望将可变宽度列的打印视图默认设置为移动视口大小。
SukieC

7

我创建了一个单独的print.css并添加了以下内容:

@page {
    size: A3;
    margin-left: -5cm;
    margin-right: -5cm;
    }

在Chrome上可以正常使用,但是负利润会杀死IE。Firefox似乎不需要它。我会对另一种方法感兴趣。


对我来说,只要我们为顶部容器定义一个固定的宽度并将其左对齐(删除自动边距),IE11的“缩小以适合”就可以正常工作,为了不将此代码应用于IE11,我曾经@media print and (-webkit-min-device-pixel-ratio:0)只匹配chrome,但是请请注意,我的内部系统没有FF要求。
弗朗西斯科·阿基诺
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.