不透明度百分比 16进制值对照表;rgb色值16进制转化原理

不透明度 16进制值
100%    FF   
95%     F2    
90%     E6    
85%     D9    
80%     CC    
75%     BF    
70%     B3    
65%     A6    
60%     99    
55%     8c    
50%     80    
45%     73   
40%     66    
35%     59    
30%     4D    
25%     40   
20%     33   
15%     26    
10%     1A  
5%      0D    
0%      00

十六进制色值#AARRGGBB 前2位代表透明度,后面每隔2位依次代表红、绿、蓝,等同于css中用rgba(0~255,0~255,0~255,0~1)表示的一样。

那么这8位16进制数是怎么算出来的呢?
首先大家知道一个颜色总共有255阶,那剩下的就是10进制转16进制了,就拿前2位的不透明度作例:
不透明度为100%,可以理解为255,255/16=15…15转化16进制即FF;
不透明度为50%,可以理解为255*0.5=128,128/16=8…0转化16进制即80;
其他红绿蓝色值算法同理,举一反三:
纯白色16进制色值为#FFFFFFFF,rgb(255,255,255)
纯黑色16进制色值为#FF000000,rgb(0,0,0)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我知道了。对于这个问题,我们可以先将 RGBRGBA 颜色转换成 HSL 颜色,然后对 HSL 颜色的亮度进行调整,得到深色颜色和浅色颜色。具体实现可以参考以下代码: ```javascript function shadeColor(color, percent) { var num = parseInt(color.slice(1), 16), amt = Math.round(2.55 * percent), R = (num >> 16) + amt, G = (num >> 8 & 0x00FF) + amt, B = (num & 0x0000FF) + amt, newColor = (0x1000000 + (R<255?R<1?0:R:255)*0x10000 + (G<255?G<1?0:G:255)*0x100 + (B<255?B<1?0:B:255)).toString(16).slice(1); return '#' + newColor; } function lightenDarkenColor(color, percent) { var num = parseInt(color.slice(1), 16), amt = Math.round(2.55 * percent), R = (num >> 16) + amt, G = (num >> 8 & 0x00FF) + amt, B = (num & 0x0000FF) + amt; R = R < 255 ? (R < 1 ? 0 : R) : 255; G = G < 255 ? (G < 1 ? 0 : G) : 255; B = B < 255 ? (B < 1 ? 0 : B) : 255; var newColor = "#" + (0x1000000 + R * 0x10000 + G * 0x100 + B).toString(16).slice(1); return newColor; } function RGBtoHSL(r, g, b) { r /= 255, g /= 255, b /= 255; var max = Math.max(r, g, b), min = Math.min(r, g, b); var h, s, l = (max + min) / 2; if (max == min) { h = s = 0; // grayscale } else { var d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return [h, s, l]; } function HSLtoRGB(h, s, l) { var r, g, b; if (s == 0) { r = g = b = l; // achromatic } else { function hue2rgb(p, q, t) { if (t < 0) t += 1; if (t > 1) t -= 1; if (t < 1 / 6) return p + (q - p) * 6 * t; if (t < 1 / 2) return q; if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; return p; } var q = l < 0.5 ? l * (1 + s) : l + s - l * s; var p = 2 * l - q; r = hue2rgb(p, q, h + 1 / 3); g = hue2rgb(p, q, h); b = hue2rgb(p, q, h - 1 / 3); } return [r * 255, g * 255, b * 255]; } function lightenDarkenColor(color, percent) { var hsl = RGBtoHSL(parseInt(color.substr(1, 2), 16), parseInt(color.substr(3, 2), 16), parseInt(color.substr(5, 2), 16)); hsl[2] += (percent / 100); hsl[2] = Math.max(0, Math.min(1, hsl[2])); var rgb = HSLtoRGB(hsl[0], hsl[1], hsl[2]); return "#" + ((1 << 24) + (Math.round(rgb[0]) << 16) + (Math.round(rgb[1]) << 8) + Math.round(rgb[2])).toString(16).slice(1); } function generateColors(color) { var lightColor = lightenDarkenColor(color, 20); var darkColor = lightenDarkenColor(color, -20); return { light: lightColor, dark: darkColor }; } var color = '#FF0000'; console.log(generateColors(color)); // { light: "#ffb3b3", dark: "#cc0000" } ``` 在这个代码中,我们先定义了两个函数 `RGBtoHSL` 和 `HSLtoRGB` 来实现 RGB 和 HSL 颜色之间的转换。然后我们定义了一个 `lightenDarkenColor` 函数来实现调整颜色亮度的功能,其中 `percent` 参数是一个表示要调整的亮度百分比的数字,例如 `20` 表示调亮 `20%`,`-20` 表示调暗 `20%`。 最后,我们实现了一个 `generateColors` 函数来生成深色和浅色颜色。该函数接受一个 RGBRGBA 颜色字符串作为输入,并通过调用 `lightenDarkenColor` 函数来生成深色和浅色颜色。函数返回一个包含两个属性的对象,分别对应深色和浅色颜色的字符串表示。 希望这个代码对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值