将十六进制反转为rgba()以获得覆盖颜色所需的不透明度

时间:2014-04-15 03:19:11

标签: css css3 colors rgb rgba

假设我有两种类似的十六进制颜色:#7a82f1#a1a6f4,分别为rgb(122, 130, 241)rgb(161, 166, 244)。假设通过设置CSS在父颜色(第一种颜色)上添加一些白色(具有可变不透明度),可以在子元素中实现第二种颜色。

有没有办法改变rgba"找到白色(或黑色)的不透明度,可以应用于一种颜色,以获得另一种颜色?例如:

.parent {         
    background: #7a82f1;     
    .child {
         background: rgba(255, 255, 255, 0.3); //This is #a1a6f4! however, how do I find out 0.3 without knowing it?
    }
}

目的是能够处理png / jpeg设计,而不是处理PSD文件的复杂性(或者不得不自己交出)。

1 个答案:

答案 0 :(得分:3)

假设

  1. 背景是黑色。
  2. A通道是线性的(0-255),因此0 =黑色(背景),255 =前景
  3. 灰度是线性的(0-255),因此0 =黑色,255 =白色
  4. 然后,不透明度为255的灰色35与不透明度为255 * 35/52 = 171的灰色52相同。

    但所有这些假设都是可疑的。在游戏编程中使用浮点值来显示颜色和透明度以及控制伽马曲线,这一切都要容易得多。在CSS中,没有那么多。