CSS 颜色 属性 在@media print 上无法正常工作

CSS color property not working correctly on @media print

我正在构建一个 Web 应用程序,它基本上由一个大表单组成,提交后可以打印。

但是,我的打印文档中的文本似乎从未受到 colorfont-weight CSS 属性的影响。

这是文档的一小部分,它在屏幕上看起来像:

然而,打印时,它最终看起来像这样:

字体相同,但由于某种原因没有应用任何样式。我没有 @media print 的覆盖 CSS 设置,所以它不应该看起来完全一样吗?

为什么我的常规样式没有应用到打印文档(打印文档是指当您单击浏览器的“打印”按钮时出现的文档)?

编辑: 根据要求发布一些示例代码来说明我的问题:

@media print {

    html {
        margin: 0;
        padding: 0;
        width: 100%;
        font-size: 0.9em;
        color: yellow !important;
    }
}

在上面的代码片段中,每个属性都可以正常工作 除了 颜色,即使在使用 !important 标签时也是如此。我不知道为什么会这样。

我在使用您的代码时没有发现任何问题(为便于理解而稍作修改):

html {
  margin: 0;
  padding: 0;
  width: 100%;
  font-size: 100px;
  color: red !important;
}
@media print {
  html {
    color: yellow !important;
  }
}
Red for web, Yellow for print

我在 safari 中的打印预览将文本显示为黄色(ish 0 看起来有点绿色,但颜色肯定是 不是 红色)。我不确定你的问题出在哪里,但是这段代码不是。

我找到了问题的根源:Bootstrap。

我使用 Chrome 的检查器工具在仿真选项卡中查看打印样式,如下图所示:

然后我选择了未正确应用颜色的元素,这导致我出现了这个 gem:

@media print {
    *,
    *:before,
    *:after {
        background: transparent !important;
        color: #000 !important; // Black prints faster: h5bp.com/s
        box-shadow: none !important;
        text-shadow: none !important;
    }

    // Other code...
}

Bootstrap 用讨厌的 * !important 组合覆盖了我所有的样式, 甚至会覆盖 html {color: yellow !important}因为 CSS's specificity rules.

为了解决我的问题,我可以从 Bootstrap 中删除上面的片段,或者制作我自己的所有颜色 !important

我没有使用 bootstrap,但遇到了同样的问题,好几天都无法解决。终于发现更改打印样式的“字体系列”有帮助。

@media print {
body
{
    font-family: system-ui, sans-serif, auto !important;
}