重点解析:
1.前端开发中颜色值有三种表现形式:rgb,十六进制和rgba。rbg具体形式为rgb(r,g,b),r g b的取值范围都在0-255,为十进制;rgba具体形式为rgba(r,g,b,a),和rgb相比多了参数a,表示透明度,取值范围是0-1,为十进制;十六进制具体形式是#加六个数字,六个数字两个为一组,依次表示rgb中的r g b。所以颜色码值之间的转换,实际上是十六进制和十进制之间的转换。
2.parseInt(str,type),依据指定基数type把str转换成一个十进制整数。str是需要转换成整数的字符串,type是被转换字符串的进制。比如parseInt('111',2)=7;parseInt('111',10)=111
3.num.toString(type),依据指定基数type把十进制数num转换成一个字符串。type是需要转换成的进制。比如Number(7).toString(2)='111'
4.string.padStart(num,str),在字符串string的长度不足num的时候,在前方用str补齐;后方补齐用string.padEnd(num,str)
实用方法:
1.十六进制转rgb
function hexTorgb(hex){let rgb='rgb('hex=hex.replace('#','')for(let i=0;i<hex.length;i+=2){rgb+=parseInt(hex.slice(i,i+2),16)+(i<4 ? ',':'')}rgb+=')'return rgb
}
2.十六进制转rgba
function hexTorgba(hex,a){let rgba='rgba('hex=hex.replace('#','')for(let i=0;i<hex.length;i+=2){rgba+=parseInt(hex.slice(i,i+2),16)+','}rgba+=a+')'return rgba
}
3.rgb转十六进制
function rgbTohex(rgb){let obj={},hex=''obj.r=parseInt(rgb.slice(rgb.indexOf('(')+1,rgb.indexOf(',')))obj.g=Number(rgb.slice(rgb.indexOf(',')+1,rgb.lastIndexOf(',')))obj.b=Number(rgb.slice(rgb.lastIndexOf(',')+1,rgb.indexOf(')')))hex=`#${obj.r.toString(16).padStart(2,'0')}`+`${obj.g.toString(16).padStart(2,'0')}`+`${obj.b.toString(16).padStart(2,'0')}`return hex
}