首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rgba混色css

rgba混色css
EN

Stack Overflow用户
提问于 2014-10-11 17:25:29
回答 1查看 3.6K关注 0票数 1

试图使一个函数获得两个RGBa值,并得到第三个值。第一个值为opacity: 1 (例如:color: rbga((0,0,0,1);),第二个值为任意不透明度(由用户设置)。然后目标是混合这两种颜色,就好像你有A颜色,然后有人拿了一个油漆工具,用半透明的颜色B对它进行了检查。

这是我想要创造的效果。

代码语言:javascript
复制
not code, just some values: 

(0,0,0,1) & (255,255,255,0.5)  = (128,128,128,1)

(255,0,0,1) & (255,255,255,0.5) = (225,128,128,1)

(0,255,255,1) & (255,255,255,0.5) = (128,255,128,1)

(0,0,255,1) & (255,255,255,0.5) = (128,128,255,1)

(81,188,187,1) & (252,0,255,0.5) = (167,94,221,1)

(81,188,187,1) & (102,192,110,0.5) = (92,190,148,1)

(81,188,187,1) & (255,228,0,0.5) = (168,208,93,1)

这是视觉上的:(想起来与上面的数据不完全一样)

这里有价值:

我最终将使用javascript来创建函数,但我真正需要弄清楚的是颜色1和颜色2之间的关系,我可以将它们放入代码中。我只是数学不够好,弄不清楚这个问题。所以,我来了

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-11 19:47:37

这是简单的合成:)

代码语言:javascript
复制
C = Ca*Aa*(1-Ab) + Cb*Ab

其中Ca依次为A的组成(红色、绿色或蓝色),Cb为B的组分,Aa和Ab分别为A和B的α值(本例中Aa为1)。

所以对于(81,188,87,1)和(239,133,11,0.75),你可以得到

代码语言:javascript
复制
81*1*(1-0.75) + 239*0.75 = 199.5
188*1*(1-0.75) + 133*0.75 = 146.75
87*1*(1-0.75) + 11*0.75 = 30

结果(199 146 30 1)

(Alpha是用A= Aa*(1-Ab) + Ab计算的,但如果任一alpha值为1时,则总是1 )

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26317267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档