【问题标题】:Reverse hex to rgba() to get necessary opacity for overlaying colors将十六进制反转为 rgba() 以获得必要的不透明度以覆盖颜色
【发布时间】:2014-05-29 05:42:50
【问题描述】:

假设我有两个相似的十六进制颜色:#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 文件(或不得不交出您自己的文件)。

【问题讨论】:

  • 对此有什么解决方案吗?我知道已经有一段时间了,但我找不到另一个与我的需求一样多的例子。谢谢!

标签: css colors rgb rgba


【解决方案1】:

假设

  1. 背景为黑色。
  2. A 通道是线性的 (0-255),所以 0=黑色(背景),255=前景
  3. 灰度是线性的 (0-255),所以 0=黑色,255=白色

那么不透明度为 255 的灰色 35 与不透明度为 255*35/52 = 171 的灰色 52 相同。

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

【讨论】:

  • 感谢您的回复。这有点令人困惑。你能简化吗?我希望从一种颜色变成另一种颜色,而不是从黑色背景中获得两种颜色。我使用 rgba 的目的是通过设置少量基色并让嵌套样式计算它们自己的色调来使颜色主题非常易于管理。设置黑色背景并以与十六进制相同的方式简单地使用 rgba 会破坏目的。此外,CSS rgba() 中的 A 通道范围为 0.0-1.0 而不是 0-255。请澄清。
  • 为了澄清我的意思,我的意思是在基色(rgba(255,255,255, xx))之上使用白色或黑色灰度,但我需要从十六进制中找出 0.0-1.0 的 alpha 值。
  • 进一步澄清假设颜色确实与原始设计师的这种不透明度关系相关,但可以说我只有六角形。 obv 你不能通过添加白色来从红色变为蓝色
  • 您能否编辑您的原始问题以更具体地解释您要做什么。您可能会包含示例 CSS 代码以显示您想在哪里使用它。然后你可能会得到你正在寻找的答案。你可能会修正“十六进制”的拼写。
  • 感谢 cmets,我编辑了原始问题
猜你喜欢
  • 2013-10-01
  • 2015-05-19
  • 2013-03-31
  • 2020-12-25
  • 2013-03-28
  • 1970-01-01
  • 2012-05-14
  • 2020-08-12
相关资源
最近更新 更多