js动态生成颜色浅的16进制值

JavaScript017

js动态生成颜色浅的16进制值,第1张

调用的例子:

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

正常的 RGB 颜色的有效范围,是从 0 到 16,777,215 (0xFFFFFF)。每种颜色的设置值都是一个四字节的整数。对于这个范围内的数,其高字节都是 0,而低三个字节,从最低字节到第三个字节,分别定义了红、绿、蓝三种颜色的值。红、绿、蓝三种成分都是用 0 到 255 (0xFF) 之间的数表示。因此,可以用十六进制数按照下述语法来指定颜色:0xBBGGRR,BB 指定蓝颜色的值,GG 指定绿颜色的值,RR 指定红颜色的值。每个数段都是两位十六进制数,即从 00 到 FF。简单的说,rgb(red,green,blue)这里red、green、blue都是10进制数,只要把它们分别转换成16进制数并且保留两位,然后再组合在一起就得到了16进制的颜色值。例如:rgb(0,255,255)转16进制,先分别转0(10)=00(16),255(10)=FF(16),255(10)=FF(16),组合得到0x00FFFF。又如rgb(255,0,0),先转换255(10)=FF,0(10)=00(16),0(10)=00(16),再组合得到0xFF0000。

rgb颜色格式是由3组0~255的数字构成,分别是红(Red)、绿(Green)、蓝(Blue)的色值。

转为16进制就是分别把红绿蓝三种颜色的色值转为十六进制,前面加个井号

例如:

rgb(255,255,255),255的16进制为FF,所以结果就是#FFFFFF。