在实际开发中,有时候会遇到将rgba颜色(或rgb颜色)转成十六进制颜色的需求,或者十六进制颜色转成rgba颜色(或rgb颜色)的需求。直接上代码。
- rgba颜色(或rgb颜色)转成十六进制颜色
/**
* 封装rgbaTo16color功能函数
* 功能: 把rgba颜色(或rgb颜色)转成十六进制颜色
*/
function rgbaTo16color(color) {
let val = color
.replace(/rgba?\(/, '')
.replace(/\)/, '')
.replace(/[\s+]/g, '')
.split(',');
let a = parseFloat(val[3] || 1),
r = Math.floor(a * parseInt(val[0]) + (1 - a) * 255),
g = Math.floor(a * parseInt(val[1]) + (1 - a) * 255),
b = Math.floor(a * parseInt(val[2]) + (1 - a) * 255);
return "#" +
("0" + r.toString(16)).slice(-2) +
("0" + g.toString(16)).slice(-2) +
("0" + b.toString(16)).slice(-2);
}
- 十六进制颜色转成rgba颜色(或rgb颜色)
/**
* 封装hexToRGBA功能函数
* 功能: 把十六进制颜色转成rgba颜色(或rgb颜色)
*/
function hexToRGBA(hex, alpha) {
let r = parseInt(hex.slice(1, 3), 16);
let g = parseInt(hex.slice(3, 5), 16);
let b = parseInt(hex.slice(5, 7), 16);
if (alpha) {
return "rgba(" + r + ", " + g + ", " + b + ", " + alpha + ")";
} else {
return "rgb(" + r + ", " + g + ", " + b + ")";
}
}