当前位置: 首页 > 面试题库 >

引导打印CSS去除背景色

太叔景同
2023-03-14
问题内容

当我使用引导程序时,它会在尝试打印页面时从所有内容中消除背景色。我网站上的几乎所有东西都使用bootstrap类,因此我想避免在bootstrap外使用大量手动CSS。我发现引导程序用于@media print删除背景色。我也使用了引导主题(主题统一),它也删除了背景色。

theme-united.css

@media print
*, *:before, *:after {
    background: rgba(0, 0, 0, 0) !important;
    color: rgb(0, 0, 0) !important;
    -webkit-box-shadow: none !important;
    box-shadow: none !important;
    text-shadow: none !important;

bootstrap.min.css

@media print
*, :after, :before {
    color: rgb(0, 0, 0)!important;
    text-shadow: none!important;
    background: 0 0!important;
    -webkit-box-shadow: none!important;
    box-shadow: none!important;

有没有一种方法可以确保在不编辑这2个CSS文件的情况下进行打印时不去除背景色?

例如:当我使用.alert-danger时,我希望打印警告警报,因为它显示在屏幕上,因此将其打印为红色框。


问题答案:

不幸的是,您的问题没有很好的答案-但是也许,如果您了解原因,那么您可以选择前进的道路。

为什么?

Bootstrap确实使用@media print { * { color: $fff; background: transparent; }}-,但这是有充分理由的。这段代码实际上是从normalizer.css项目派生的(当时是@mdo的学院,@
necolas)–目的是使所有浏览器的行为相同。这些人出于非常充分的理由选择对CSS进行“标准化”:

在大多数浏览器中,可以选择包含或排除背景色,因此即使在同一浏览器中,行为也不是标准的。想象一下,一个网站背景非常暗且带有白色文本的网站-
在不带背景的情况下打印时,看起来好像您什么都没打印-在实际上您是在无(白色)背景上打印白色文本时。

无法说明所有不同的颜色用途,因此他们选择使用黑色(字体)和白色(背景,实际上是“透明”)。甚至选择黑色也是经过深思熟虑的,它是一种更好的打印解决方案,因为大多数彩色打印机都具有更多的黑色“墨水/墨粉”(更经济),并且它们无需混合颜色即可制成黑色(速度更快)。

请记住,Bootstrap也是一个“框架”-如果您愿意的话,也是一个起点-
并对@mdo和@necolas表示敬意,因为他们具有远见卓识,可以建立可预测的基准。 (不,我不认识他们。)

不…

因此,这里的想法是:“如果我们可以’返回’并取消设置,该怎么办。不幸的是CSS不能那样工作-
是的,浏览器将CSS声明加载到最后一个声明获胜的“队列”中(LIFO或last-in -first-
out),但我不知道删除此堆栈的方法,因此CSS开发人员只会在最后添加更多内容…

因此,有人会假设我们可以回去—添加一个* { background-color: inherit }。问题是inherit还原到父属性,但*它是根,因此没有任何要还原的属性。一样initial

也许!

因此,我们剩下4个选项,它们都不是您所希望的,但事实就是如此。按难度顺序:

  1. 下载BS(较少或无礼)源,编辑有问题的代码,然后进行编译。(您需要使用本地副本,CDN无法使用。)
  2. 下载您选择的CSS变体,搜索并删除有问题的代码。(没有CDN了。)
  3. 使用getbootstrap.com/customize创建新的变体-在“通用CSS”下排除“印刷媒体样式”。(再次,没有CDN)
  4. 覆盖要打印颜色的特定项目:例如
    @media print {
      .alert-danger {
        color: yellow !important;
        background-color: red !important;
      }
    }
    

CDN的BS副本现在可以使用,但是您遇到的问题是,用户可能无法打印背景,并且输出白色(例如,黄色)在白色上!

最后

好吧,我希望至少知道为什么会这样,这是您思考变通办法的一种方式。我遵循的一般经验法则是,在打印时,背景总是(应该是)白色。受到这种限制后,您便开始思考新颖的想法,例如仅“打印”(@mediaonly screen { .hidden-screen { display: none; }})的文字周围的感叹号图标



 类似资料:
  • 问题内容: 我在这家公司是新来的,我们有一款使用英里数的CSS的产品。我正在尝试为我们的应用制作可打印的样式表,但是in 中存在问题。 其他所有内容都可以使用,我可以修改边框等,但不会在打印中出现。现在,我了解到,如果没有更多详细信息,可能所有人都无法回答我的问题。我只是想知道以前是否有人遇到过此问题或类似问题。 问题答案: 如果用户在其打印设置中关闭了“打印背景色和图像”,则没有CSS会覆盖它,

  • 我正在使用V3。3.6的引导,我希望我的Ņavbar的背景颜色是深红色。除了标准引导CSS之外,我还有自己的CSS,如下所示: 该网站是http://www.alkd.org.au 当悬停在每个导航栏项目上时,我得到了红色文本和白色背景的正确样式。但是标准navbar的背景颜色是黑色,而不是深红色,即使我已经覆盖了. navbar-逆背景颜色。浏览器开发工具显示,我的css是'获胜'之一,但似乎被

  • 问题内容: 我正在尝试使用chrome打印一个PHP生成的文档,在浏览器上看起来不错,链接到我要打印的页面,但是我的打印机无法打印任何彩色背景,请问有人可以提供任何建议吗?我可以用CSS做到这一点吗? 问题答案: 您可以在浏览器中调整是否打印背景颜色和图像。查看浏览器的打印选项。 GoogleChrome从26版(2013年3月)开始提供此功能。 同样从版本17开始,Chrome允许通过在元素CS

  • 问题内容: 是否可以在Internet选项的“高级”选项卡中不启用“打印背景色和图像”的情况下打印背景图像? 我认为可以使用没有“背景图像”的替代方法…使用div标签和绝对位置可以模拟背景图像的相同效果吗?我也想在页面上重复背景图像。 问题答案: 打印背景图像(在标记中指定为背景图像的那些图像)的能力完全取决于最终用户,您无法从代码中以编程方式控制此功能。Firefox的一个插件提供了JavaSc

  • 主要内容:1. background-color,2. background-image,3. background-repeat,4. background-position,5. background-attachment,6. background-size,7. background-origin,8. background-clip,9. background在制作网页时我们往往需要在网页中添加一些背景颜色、背景图像让网页更加美观,吸引访问者的眼球。CSS 中提供了一系列用于设置 HT

  • 问题内容: 我正在使用ASP NetSprites包在我的网站上创建CSSSprites。 它正在工作,但是生成的图像在打印时不会出现。 在HTML级别生成的代码是: 当用户打印页面时,如何显示徽标图像? 我尝试将其添加到我的print.css样式表中,但没有成功: print.css工作正常,它正在格式化页面,如我所希望的那样,用于页面上的其他元素。我唯一的问题是在打印时无法显示网站徽标图像。