是否可以从渐变或两种颜色之间的范围中选择一种随机颜色?

时间:2018-10-19 10:17:16

标签: javascript html css

我有两个颜色范围的示例,分别是#ed1f7f和#6c52a2,是否有任何可能的方式可以将一些具有某些随机颜色的元素放在这两个范围内?

1 个答案:

答案 0 :(得分:1)

基本上,您要做一个linear interpolation in 3D space

有一个很好的公式可以做到这一点:

(1-u)*p_1+u*p_2

where u is a random float between 0 and 1
p_1, p_2 are the co-ordinate of the points

对于颜色,如果使用数组存储颜色分量,则为

function interpolate(u, c1, c2) {
    return c1.map((a, i) => Math.floor((1-u) * a + u * c2[i]));
}
function pickRandom(u, c1, c2) {
    return interpolate(Math.random(), c1, c2);
}

如果您的颜色值采用十六进制表示法,则需要先将其转换为数字rgb或hsl。