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

标签 css media-queries

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

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

这是文档的一小部分,它在屏幕上的样子:

enter image description here

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

enter image description here

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

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

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

@media print {

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

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

最佳答案

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

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

enter image description here

然后我选择了颜色没有正确应用的元素,这让我找到了这个小 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:黄色 !important} 因为 CSS's specificity rules .

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

关于CSS 颜色属性在@media print 上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32950554/

相关文章:

jquery - 将事件类添加到子菜单的顶级菜单

css - 为什么 Chrome 打印 CSS 仿真和打印预览之间存在如此大的差异?

css - 使内容 <DIV> 填充具有可变高度标题的容器

css - 断点处的样式 "splitting",媒体查询

css - 使用 CSS 移动查询禁用横向或纵向

css - 深色模式下嵌入 SVG 图像的问题

jquery - 如何将动态表单放入 jquery mobile 中的字段集?

CSS Bootstrap 导航最小宽度 : 992px

html - 媒体查询影响桌面版本,但不影响移动版本

css - 这些媒体查询是什么意思?