媒体查询彩色单色和打印

Posted

技术标签:

【中文标题】媒体查询彩色单色和打印【英文标题】:media queries color monochrome and printing 【发布时间】:2013-06-22 02:26:15 【问题描述】:

我正在尝试为单色设备设置一些替代样式 - 即黑白打印输出。

我以为我可以使用一个简单的 css 媒体查询来执行此操作,但它不起作用。

.Something  color: red; 
@media all and (monochrome) 

  .Something  color: black; 

当我尝试打印(或预览)它时,未应用单色样式。

上面是一个糟糕的例子,但我设置了一个 JSFiddle:

http://jsfiddle.net/qC3af/

在 Firefox 中查看上述打印预览时,既不应用彩色也不应用单色。 在 chrome 中,即使在黑白模式下,它也能保持颜色特征。

我错过了什么?

我确实注意到 JSFiddle 突出显示颜色的方式与所有其他媒体查询不同。这是线索吗?

【问题讨论】:

【参考方案1】:

首先,我通常使用@media print 进行打印操作。在媒体打印里面可以设置@page

例如,假设您想在横向模式下打印页面。这简直完美。

@media print 
    @page 
        size: landscape;
    

对于您的问题,我会使用@media print。在正文选择器中,您可以使用filter: grayscale(100%);

所以代码看起来像这样。

 @media print 
        body 
            filter: grayscale(100%);
        
    

如果你的目标是旧版 IE,你应该为 Safari 和 Opera 添加filter: Gray(); filter: url('#grayscale');

这是最终代码...

@media print 
  body 
    /* IE4-8 and 9 */
    filter: Gray();
    /* SVG version for IE10, Chrome 17, FF3.5, Safari 5.2 and Opera 11.6 */
    filter: url('#grayscale'); 
    /* CSS3 filter, at the moment Webkit only. Prefix it for future implementations */
    -webkit-filter: grayscale(100%); 
    filter: grayscale(100%); /* future-proof */
  

【讨论】:

我想你可能误解了这个 5 年前的问题 刚刚给出了一个答案,以防有人从中受益:)【参考方案2】:

一般来说这是不可靠的。您可以在此处查看说明:

http://www.quirksmode.org/css/tests/mediaqueries/color.html

我会注意到,我的角落认为它至少有 16 个但不是 32 个颜色索引,所以它似乎知道它有 16 种色调,但随后它错误标记了它们并未能通过单色测试...

实际上,浏览器无法完全了解其显示。例如,它可能正在向具有比真实硬件更多功能的虚拟设备显示。

【讨论】:

所以基本上你所说的是彩色和单色媒体查询(在撰写本文时)基本上毫无价值?真可惜。我想我会保留我的 css 更改但未经测试,因为它们有朝一日会得到适当的支持。谢谢 是的,向设备询问初始默认设置是件好事,但如果您认真对待它而没有用户覆盖,则弊大于利..

以上是关于媒体查询彩色单色和打印的主要内容,如果未能解决你的问题,请参考以下文章

横向打印的媒体查询?

打印纸张大小的 CSS 媒体查询

javascript 命令无法使用媒体查询打印

媒体查询_网页打印样式

可以连接打印机的设备的媒体查询

打印媒体查询 `@media print` 在 iPad 上有效吗?