我目前正在 JS 中开发一个动画库,需要根据 0 - 1 之间的进度值计算两个值之间的颜色。
例如,该函数可能如下所示。这将以十六进制格式输入两种颜色。
const interpolateColour = (colourA, colourB, progress) => { return polColour }
Run Code Online (Sandbox Code Playgroud)
目标是返回两种颜色之间 0.5 进度或 50% 的颜色。我知道 HSV 的 HEX 颜色很可能需要转换为 RGBA 才能实现此效果,但不确定哪种方法是最好的方法。
编辑:我想通了......
const is = {
hex: a => /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a),
rgb: a => /^rgb/.test(a),
hsl: a => /^hsl/.test(a),
col: a => (is.hex(a) || is.rgb(a) || is.hsl(a)),
}
const convertToRgba = (colour) => {
return is.hex(colour) ? hexToRgba(colour)
: is.rgb(colour) ? rbgToRgba(colour) …Run Code Online (Sandbox Code Playgroud)