【发布时间】:2012-09-23 14:30:21
【问题描述】:
我有一个简单的问题:如果我不打算在 RGBA 上使用 Alpha,对于某些颜色,我应该在这些颜色上使用 HEX 吗? HEX 有什么 RGBA 没有的吗?比如浏览器兼容性?还是一直使用 RGBA 就可以了?我觉得它更好,因为如果我想使用 Alpha,我可以。 提前致谢。
【问题讨论】:
我有一个简单的问题:如果我不打算在 RGBA 上使用 Alpha,对于某些颜色,我应该在这些颜色上使用 HEX 吗? HEX 有什么 RGBA 没有的吗?比如浏览器兼容性?还是一直使用 RGBA 就可以了?我觉得它更好,因为如果我想使用 Alpha,我可以。 提前致谢。
【问题讨论】:
两者都应该与任何符合标准的浏览器兼容。
编辑:IE 中可能存在一些错误行为(惊喜!):http://css-tricks.com/ie-background-rgb-bug/
【讨论】:
当使用 RGBA 时,我相信正确的语法 是 来使用 R、G、B 值。由此得名。我没有尝试使用 Hex,这可能会导致意外行为。
在浏览器兼容性方面,Hex 和 RGB 几乎相同/相同。
【讨论】:
从浏览器兼容性的角度来看,任何现代浏览器几乎没有真正的差异。
如果可以,我会选择 HEX。更短的一个字符串,因此更容易复制到第三方程序(例如 Photoshop 等),而且您没有 IE bug mentioned by Erty。
我倾向于只在需要 alpha 的地方使用 RGBA,在所有其他元素上我使用 HEX。
【讨论】:
您实际上(几乎)可以一直使用十六进制。
即使您需要 alpha,也有一种方法可以将 RGBA 值转换为等效的 Hex 值,只要背景颜色(在具有 rgba 的元素下)是单一纯色。
这个转换的算法是here。
Source => Target = (BGColor + Source) =
Target.R = ((1 - Source.A) * BGColor.R) + (Source.A * Source.R)
Target.G = ((1 - Source.A) * BGColor.G) + (Source.A * Source.G)
Target.B = ((1 - Source.A) * BGColor.B) + (Source.A * Source.B)
(其实我已经用过几次了,效果很好。
正如前面的答案中提到的,这里的好处是预期的 RBGA 颜色看起来应该在 ie8 及以下。
【讨论】: