我有一个十六进制颜色,例如#F4F8FB(或rgb(244, 248, 251))我想要转换成尽可能透明的 rgba颜色(当显示为白色时).合理?我正在寻找一种算法,或者至少想一个算法来解决这个问题.
例如:
rgb( 128, 128, 255 ) --> rgba( 0, 0, 255, .5 )
rgb( 152, 177, 202 ) --> rgba( 50, 100, 150, .5 ) // can be better(lower alpha)
Run Code Online (Sandbox Code Playgroud)
想法?
基于Guffa答案的FYI解决方案:
function RGBtoRGBA(r, g, b){
if((g == null) && (typeof r === 'string')){
var hex = r.replace(/^\s*#|\s*$/g, '');
if(hex.length === 3){
hex = hex.replace(/(.)/g, '$1$1');
}
r = parseInt(hex.substr(0, 2), 16);
g = parseInt(hex.substr(2, 2), 16);
b = parseInt(hex.substr(4, 2), …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个工具来帮助我为网络应用程序选择颜色。基本上,我希望能够指定最终颜色和一些叠加参数,并确定底层颜色需要是什么(或者是否可以使用指定参数实现)。
所有覆盖层都将是半透明的黑色。
该系统如何工作的示例:
我应该指出,我不需要帮助来编写实际代码,我只是不知道要使用的数学公式,而且我今天的 Google 能力很弱。我能找到的最接近的是这个优秀的答案(/sf/answers/856005041/),但它缺少“了解最终所需颜色、了解叠加颜色、了解叠加不透明度”的迭代