console.log(ColorLuminance(colorRGB(),0.5)) //先自动生成16进制颜色,在转成比原有颜色轻50%;
//16进制随机颜色
function colorRGB(){
return '#' + (function (h) {
return new Array(7 - h.length).join("0") + h
})((Math.random() * 0x1000000 << 0).toString(16))
}
ColorLuminance接受两个参数:
参数1: 十六进制颜色值,例如“#abc”或“#123456”(散列是可选的)
参数2: 亮度因数,即,-0.1是10%更暗,0.2是轻20%等。
function ColorLuminance(hex, lum) {
// validate hex string
hex = String(hex).replace(/[^0-9a-f]/gi, '')
if (hex.length < 6) {
hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]
}
lum = lum || 0
// convert to decimal and change luminosity
var rgb = "#", c, i
for (i = 0 i < 3 i++) {
c = parseInt(hex.substr(i*2,2), 16)
c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16)
rgb += ("00"+c).substr(c.length)
}
return rgb
}
相关资源:https://blog.csdn.net/dingshi7798/article/details/105829757
js将十六进制颜色转透明度的函数
CSS颜色的表示方式一般有两种10进制与16进制,分别是【rgb(255, 100, 0)】【#FF0000】。两个16进制组合数是0-255(16*16=256)。
颜色是RGB红绿蓝三原色组成的,16进制的颜色由6位字符组成(如:FF0000,相隔重复类型也可以简写成F00),如果16进制要包含透明度必须由八位字符组成(如:FFDDAA80)。
平时css样式的透明度都是按十进制计算的,如:opacity: 0.5与background-color: rgba(255, 100, 0, 0.8)。
10进制的255阶为不透明(0%),0阶为100%透明。所以如果要获取50%透明度,255 * 0.5 = 127.5将127.5四舍五入再转16进制,方法如下:
下面方法是0%-100%的透明度输出: