@fast-china/utils
Version:
Fast 工具库.
62 lines (61 loc) • 2.01 kB
JavaScript
import { FastError } from "../error/index.mjs";
const colorUtil = {
/**
* hex颜色转rgb颜色
* @param str 颜色值字符串
* @returns 返回处理后的颜色值
*/
hexToRgb(str) {
let hex = "";
const reg = /^#?[0-9A-F]{6}$/i;
if (!reg.test(str)) throw new FastError("输入错误的hex");
str = str.replace("#", "");
hex = str.match(/../g);
for (let i = 0; i < 3; i++) hex[i] = parseInt(hex[i], 16);
return hex;
},
/**
* rgb颜色转Hex颜色
* @param r 代表红色
* @param g 代表绿色
* @param b 代表蓝色
* @returns 返回处理后的颜色值
*/
rgbToHex(r, g, b) {
const reg = /^\d{1,3}$/;
if (!reg.test(r) || !reg.test(g) || !reg.test(b)) throw new FastError("输入错误的rgb颜色值");
const hex = [r.toString(16), g.toString(16), b.toString(16)];
for (let i = 0; i < 3; i++) if (hex[i].length === 1) hex[i] = `0${hex[i]}`;
return `#${hex.join("")}`;
},
/**
* 加深颜色值
* @param color 颜色值字符串
* @param level 加深的程度,限0-1之间
* @returns 返回处理后的颜色值
*/
getDarkColor(color, level) {
const reg = /^#?[0-9A-F]{6}$/i;
if (!reg.test(color)) throw new FastError("输入错误的hex颜色值");
const rgb = this.hexToRgb(color);
for (let i = 0; i < 3; i++) rgb[i] = Math.round(20.5 * level + rgb[i] * (1 - level));
return this.rgbToHex(rgb[0], rgb[1], rgb[2]);
},
/**
* 变浅颜色值
* @param color 颜色值字符串
* @param level 加深的程度,限0-1之间
* @returns 返回处理后的颜色值
*/
getLightColor(color, level) {
const reg = /^#?[0-9A-F]{6}$/i;
if (!reg.test(color)) throw new FastError("输入错误的hex颜色值");
const rgb = this.hexToRgb(color);
for (let i = 0; i < 3; i++) rgb[i] = Math.round(255 * level + rgb[i] * (1 - level));
return this.rgbToHex(rgb[0], rgb[1], rgb[2]);
}
};
export {
colorUtil
};
//# sourceMappingURL=index.mjs.map