【问题标题】:Printing Twitter Bootstrap correctly正确打印 Twitter Bootstrap
【发布时间】:2013-09-29 06:13:04
【问题描述】:

我真的很难正确打印我的 Twitter Bootstrap 视图,并且想知道是否有人能指出我正确的方向。我添加了一个自定义的“print.css”,它覆盖了一些原始引导程序样式,以及我自己的一些组件的样式。

这是我的打印对话框:

不确定您是否可以从图像中如此轻松地分辨出来,但井已经失去了背景,也没有跨越整个页面宽度。此外,“列”或“跨度”似乎都很不稳定。页面是这样构建的:(只显示第一行以保持干净)

<div class="container-fluid">
    <div class="row-fluid">
        <div class="span3">
            <div class="row-fluid">
                <div style="height: 150px; width: 300px">
                    <img class="img-rounded" src='data:image/png;base64,@Model.Unit.Image64' />
                </div>
            </div>

            <div class="row-fluid">
                ...
            </div>

        </div>
        <div class="span4">
            ...Pie chart control
        </div>
        <div class="span5">
            ...Bar chart control
        </div>

    </div>
</div>

这是我的 print.css:

@media print {
    body {
        margin: 0;
        padding: 0;
        line-height: 1.4em;
        word-spacing: 1px;
        letter-spacing: 0.2px;
        font: 13px Arial, Helvetica,"Lucida Grande", serif;
        color: #000;
    }

    #print-btn #update-btn #nav-left #nav-bar, #selectUnitContainer, .navbar, .sidebar-nav {
        display: none;
    }

    #print-btn, #update-btn, #units {
        display: none;
    }

    #nav-left {
        display: none;
    }

    #report-container {
        visibility: visible;
    }

    .well .span12{
        width: 100%;
        visibility: visible;
    }

    .navbar {
        display: none;
    }

    .sidebar-nav {
        display: none;
    }
}

【问题讨论】:

  • 您能找到合适的解决方案吗?知道会很有趣,因为我自己用 Bootstrap 编写了一些网站! =)
  • 嗨@MackieeE :) 很抱歉,但我还没有开始测试这个,因为我现在正在处理一个不同的问题!一旦我这样做了,我一定会更新这篇文章,所以把它放在你的关注列表中:)
  • 还要注意 body { height:100% } 更改为 height:initial

标签: html css twitter-bootstrap printing


【解决方案1】:

首先 Bootstrap.css 确实带有pre-defined print styles,例如:

/** 
 *  Use these for toggling content for print.
**/
.visible-print {
    display: block !important;
}

.hidden-print {
    display: none !important;
}

其次您可以使用page-break css rule 进行测试,以将图表分隔到不同的页面上,以便格式更清晰。

/** 
 *  Page-break-inside seems to
 *  be required for Chrome.
**/
div.somechart { 
   page-break-after: always; 
   page-break-inside: avoid;
}

第三次测试,使用行格式化以占据打印屏幕上的全宽,而不是依赖于span3 的百分比/col-*-3's 和 span4/col-*-4's,因为当您考虑到它们时,它们的行为似乎正确

  • 系统打印页边距
  • Bootstrap 的 @print 定义的边距
  • 页面装订线
  • 打印屏幕上的跨度百分比。

最后的最后一点很有帮助(是的,尽管有自定义的@print 样式!):

<link href="/assets/css/bootstrap.min.css" rel="stylesheet" media="screen" />

到:

<link href="/assets/css/bootstrap.min.css" rel="stylesheet" media="all" />

【讨论】:

  • 好的,所以我试过了,我的打印看起来完全一样:(没有背景颜色或大部分结构。只有几个边框。我的意思是我添加了visible-print 到几个标签并经过测试,如下所示:&lt;div class="container-fluid visible-print" id="report-container"&gt;
  • 啊!很遗憾听到:(即使将所有span4span5s 更改为span12s 之后也是如此?我假设图表都使用像素宽度,而其他所有内容都是百分比
  • 是的 :( 全部改变了。图表会自动拉伸到它们的父宽度,所以我看不出给它们一个特定的 px 宽度会如何改变任何东西?再说一次,我不是设计师,我也不太了解 css,所以我可能是错的。很有可能我是.. ;) 我没有任何百分比宽度,只有跨度。
  • @NicklasWinger 几天前我不得不做一个小的.xsl 项目,我遇到了同样的问题,添加了一些重要的点:)
  • 非常感谢@MackieeE 的努力 :) 我会调查并告诉你:)
猜你喜欢
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
相关资源
最近更新 更多