彩色 Bootstrap Glyphicons 打印为黑色

Posted

技术标签:

【中文标题】彩色 Bootstrap Glyphicons 打印为黑色【英文标题】:Colored Bootstrap Glyphicons is printed black 【发布时间】:2016-05-14 03:43:43 【问题描述】:

我无法以我设置的颜色打印彩色字形图标。它是黑色的。

<i class="glyphicon glyphicon-time text-success"></i>

我在打印普通文本时遇到了同样的问题,但我在 CSS 文件中添加了 !important,如下所示:

.text-success color:#688c2a !important

我也尝试将它添加到它的父级,但结果相同。它在屏幕上看起来不错。我正在使用 Bootstrap 3

CSS 媒体设置为 all,并且我已确保在 CSS 文件之后使用 php ?t=time(); 没有缓存。

关于如何让它也适用于 Glyphicons 的任何想法?

【问题讨论】:

您使用的是彩色打印机吗? 我知道有人会这么问。非常有趣! ;) 抱歉,无法抗拒。你能放一个代码示例吗?我猜你没有把规则放在打印样式表中。 示例在问题中。它仅适用于文本而不适用于字形图标。非常令人沮丧。 我的意思是 jsfiddle、codepen 或类似的例子。以这种方式制作最小的测试用例通常可以帮助您解决问题,如果您仍然卡住,请发布示例。 【参考方案1】:

如果屏幕上的颜色正确而打印出来的颜色不对,你可能需要找到打印的 css 规则。

尝试在您的样式表中查找媒体查询“@media print”。可能你会在它下面的某个地方找到错误的颜色规则。

【讨论】:

我已将引导文件设置为 media="all"。奇怪的是颜色只应用于文本。 如果您查看bootstrap source code,打印样式包含在打印媒体查询中,所以我认为这将覆盖它。 好的,所以我在引导文件中找到了这一行:@media print,:before,*:afterbackground:transparent !important;color:#000 !重要的; ...并删除了颜色:#000 !important;现在它正在工作。【参考方案2】:

代码似乎是正确的,并且可以在我这边找到。尝试清除浏览器的缓存和 cookie。 如果仍然出现问题,请尝试使用 jquery 进行更改

$('.text-success').css('color', 'red');

【讨论】:

【参考方案3】:

打印样式表可能会出现此类问题。您使用哪种浏览器进行打印?

@media print and (color) 
   * 
      -webkit-print-color-adjust: exact;
      print-color-adjust: exact;
   

尝试将此代码添加到您的样式表中。此外,请在打印前检查浏览器中的格式和打印选项。希望这会有所帮助。

编辑: 如果您不介意在您的 html 中添加 css,您可以尝试在您的 html 中添加这些样式 &lt;style&gt; 标签。

【讨论】:

@media print .text-success * -webkit-print-color-adjust: 精确;打印颜色调整:精确;这不起作用。我不得不从 Bootstraps 媒体打印中删除 color:#000 !important。【参考方案4】:

除非绝对必要,否则请远离 !important。 Bootstrap 3 有一个打印样式的媒体查询,它为字形继承了这种样式:

@media print *, :after, :before 
    color: #000!important;
    text-shadow: none!important;
    background: 0 0!important;
    -webkit-box-shadow: none!important;
    box-shadow: none!important;

如您所见,他们已经在执行 !important。创建您自己的印刷媒体查询,使用类名而不是星号来更具体地表示一切。

@media print .text-success 
    color:#688c2a !important;

如果它仍然没有覆盖样式,则使用 !important。关键是使用打印媒体查询来处理类似的事情。

【讨论】:

感谢您的意见。我已将您的建议添加到我的打印表中,但它仍然只适用于文本而不适用于字形。 :before 为我在 PDF 上添加了一个白色字形图标。您可以在@media 查询中将其缩小到 .glyphicon:before【参考方案5】:

好的,我已经尝试了建议的解决方案,但无法正常工作。

我终于不得不去 Bootstraps 自己的 @media print 设置并删除 color:#000 !important

太奇怪了,我只能在删除该行之前在文本上打印颜色。我不知道是否有更好的解决方案,但我就是这样解决的。

感谢大家的意见!

【讨论】:

【参考方案6】:

我遇到了同样的问题。实际上,在 Bootstrap 样式表中你有

@media print 
  *,
  *:before,
  *:after 
    background: transparent !important;
    color: #000 !important;
    -webkit-box-shadow: none !important;
            box-shadow: none !important;
    text-shadow: none !important;
  
...

上面的片段来自原始的Bootstrap CSS文件,不要复制粘贴,它不会解决问题。这会使每个符号(包括字形)在打印时变黑。我找到的唯一解决方案是从引导 CSS 样式表中删除这部分。完成此操作后,我可以使用浏览器中的 PDF 打印机将设计好的页面以适当的颜色打印到 PDF 文件中。

顺便说一句,这允许恢复所有被覆盖的背景颜色和阴影(但是,根据其他帖子,它们可以使用您自己的 @media print 和 !important 定义来恢复)。

这种解决方案的一个不便之处在于,一旦您更新了 Bootstrap 版本,您将需要执行相同的(手动)操作来保持打印不变。


更新:正如 Andreas 在his answer 中提出的那样,没有必要删除整个“@media print”部分。如果您只想使字形正确着色,则从本节中删除以下行实际上就足够了:

color: #000 !important;

【讨论】:

这与我之前发布的解决方案很接近。我只删除了这一行: color:#000 !important;它成功了。【参考方案7】:

永远不要修改 Bootstrap 更少的文件,这最终会成为维护的地狱。 您的问题很可能是图标将呈现给 i:before 而不是 i 元素的内容。 所以有你自己的css:

.text-success:before color:#688c2a !important

【讨论】:

【参考方案8】:

最好覆盖 css 而不是更改供应商文件;

@media print 
  *, *:before, *:after 
    color: inherit !important;

【讨论】:

以上是关于彩色 Bootstrap Glyphicons 打印为黑色的主要内容,如果未能解决你的问题,请参考以下文章

[Bootstrap入门][组件-Glyphicons 字体图标]

Bootstrap Glyphicons 未显示

缺少 Bootstrap 3.2.0 社交 Glyphicons

学习实现bootstrap glyphicons字体

Bootstrap 3.2.0 Glyphicons 不工作

Bootstrap 3+Rails 4 - 某些 Glyphicons 不工作