我一直在eReaders上测试HTML5网络应用程序,它基本上可以工作,但颜色都乱了(它是单色的)。我的应用程序使用了很多颜色,每秒钟都会更新一次。我也需要这个在彩色显示器上运行,所以我需要检测它是否是单色的。
我使用的eReader是索尼公司生产的,它报告screen.pixelDepth
和screen.colorDepth
都是16,这与我支持的大多数其他设备不同(24和32很常见)。
到目前为止,我的想法是:
- 始终向报告16位颜色的设备显示单色
- 来自用户代理/
navigator.appVersion
的嗅探 - 画布上的样本(尽管我认为这也可能是谎言)
假设16位颜色=单色是否安全?或者还有其他我可以忽略的更可靠的技巧吗?
在计算中,"单色"通常是2位,16位的显示器通常被称为灰度(尽管它可能是其他颜色的阴影)。
考虑使用调色板,其中颜色转换为适当的16位值,而不是设备嗅探。你可以从网络安全调色板开始。
或者,如果用户认为"使用灰度"会更好,可以给他们一个选项——你可能会发现其他用户也在选择这个选项。如果你的颜色都是基于类的,你可以替换当前的样式表,或者用适当重新分配的颜色添加一个新的样式表。
我不熟悉如何检测灰度屏幕,但我希望一些色盲用户解决方案能给你帮助。
问题是你需要使用颜色来传输信息,但屏幕(或色盲者的眼睛)会从颜色中删除一些信息,这样用户就会感到困惑。解决方案是确保通过颜色传输的信息不受屏幕或眼睛的影响,你也可以使用其他媒体而不是颜色。
-
色盲或灰度屏幕不会删除所有颜色中的信息。例如,如果颜色被描述为HSL(色调/饱和度/光),灰度屏幕将删除色调和饱和度,但保留光。如果你使用5种不同的颜色,只要它们有5个不同的光值(例如0.1、0.3、0.5、0.7、0.9),用户在灰度屏幕上识别它们就不会有问题。
-
您也可以使用其他介质来传输通过颜色传输的信息。例如,Adium For Mac使用形状和颜色来指示联系人状态。在线用户是绿色矩形,远离是黄色三角形,繁忙是红色圆圈。这是对色盲友好的,因为用户可以通过识别形状来了解接触状态。