UNPKG

element-plus

Version:

A Component Library for Vue 3

41 lines (40 loc) 1.21 kB
export function calcColorChannels(c) { let rawColor = c.replace('#', ''); if (/^[0-9a-fA-F]{3}$/.test(rawColor)) { rawColor = rawColor[0].repeat(2) + rawColor[1].repeat(2) + rawColor[2].repeat(2); } if (/^[0-9a-fA-F]{6}$/.test(rawColor)) { return { red: parseInt(rawColor.slice(0, 2), 16), green: parseInt(rawColor.slice(2, 4), 16), blue: parseInt(rawColor.slice(4, 6), 16), }; } return { red: 255, green: 255, blue: 255, }; } export function mixColor(color, percent = 0.2) { let { red, green, blue } = calcColorChannels(color); if (percent > 0) { red *= 1 - percent; green *= 1 - percent; blue *= 1 - percent; } else { const value = Math.abs(percent); red += (255 - red) * Math.abs(percent); green += (255 - green) * value; blue += (255 - blue) * value; } return `rgb(${Math.round(red)}, ${Math.round(green)}, ${Math.round(blue)})`; } export function lighten(color, percent = 0.2) { return mixColor(color, -percent); } export function darken(color, percent = 0.2) { return mixColor(color, percent); }