【问题标题】:Javascript: detect monochrome displayJavascript:检测单色显示
【发布时间】:2012-07-12 18:20:21
【问题描述】:

我一直在电子阅读器上测试一个 HTML5 网络应用程序,我得到了它大部分工作,但颜色都搞砸了(它是单色的)。我的应用程序使用大量颜色,每秒更新一次。我也需要它在彩色显示器上运行,所以我需要检测它是否是单色的。

我使用的电子阅读器是 Sony 制造的,它报告 screen.pixelDepthscreen.colorDepth 都是 16,这与我支持的大多数其他设备不同(24 和 32 很常见)。

到目前为止,我的想法是:

  • 始终向报告 16 位颜色的设备显示单色
  • 从用户代理嗅探/navigator.appVersion
  • 画布上的样本位(尽管我认为这也可能存在)

假设 16 位颜色 = 单色是否安全?或者是否有另一个我可以忽略的更可靠的技巧?

【问题讨论】:

    标签: javascript html android-browser monochrome


    【解决方案1】:

    在计算中,“单色”通常是 2 位,16 位显示器通常称为灰度(尽管它可能是其他颜色的阴影)。

    考虑使用调色板,将颜色转换为适当的 16 位值,而不是设备嗅探。您可以从web safe colour palette 开始。

    或者,如果用户认为这样看起来会更好,可以为他们提供“使用灰度”选项 - 您可能会发现其他用户也选择了该选项。如果您的颜色都是基于类的,您可以替换当前样式表或添加具有适当重新分配颜色的新样式表。

    【讨论】:

    • 这听起来是个不错的解决方案。这只是电子墨水屏幕的问题,但我喜欢为所有用户提供它作为选项的想法。
    【解决方案2】:

    我不熟悉如何检测灰度屏幕,但我希望一些色盲用户解决方案能给你帮助。

    问题是您需要使用颜色来传递信息,但屏幕(或色盲人的眼睛)会从颜色中删除一些信息,这样用户就会感到困惑。解决的办法是确保通过颜色传递的信息不受屏幕或眼睛的影响,也可以使用其他媒体而不是颜色。

    1. 色盲或灰度屏幕不会删除颜色中的所有信息。例如,如果颜色被描述为 HSL(色相/饱和度/亮度),则灰度屏幕会移除色相和饱和度,但保留亮色。如果您使用 5 种不同的颜色,只要它们具有 5 个不同的 Light 值(例如 0.1、0.3、0.5、0.7、0.9),用户在灰度屏幕中识别它们就不会出现问题。

    2. 您还可以使用其他媒体来传输通过颜色传输的信息。例如,Mac 版 Adium 使用形状和颜色来指示联系人状态。在线用户是绿色矩形,离开是黄色三角形,忙碌是红色圆圈。这是对色盲友好的,因为用户可以通过识别形状来了解联系人状态。

    【讨论】:

      猜你喜欢
      • 2011-06-10
      • 2021-10-22
      • 2016-01-07
      • 1970-01-01
      • 2018-02-02
      • 2020-05-08
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多