如何用js生成随机rgb颜色?

需求是要随机 颜色要亮色 不要暗色
我没找到亮色的规律是什么
要怎么做?

阅读 5.7k
2 个回答

很久之前做过这个,你可以试试。


以 rgb 作为亮色颜色评判标准的话,那么 r、g、b 必须有一个值很小,一个值很大,最后一个随机。也就是对应下面的 a、b、c。代码如下:
output 为你所需要的。

let a = 20, 
    b = 230,
    c = Math.floor(Math.random() * 255)
function randomSort() {
  return Math.random() < 0.5 ? -1 : 1
}
let randomArray = [a, b, c].sort(randomSort)
let output = `rgb(${randomArray[0]},${randomArray[1]},${randomArray[2]})`

如果用 HSL 格式就不用纠结了,因为 HSL 中的 L 值就代表亮度,只要保证这个 L 大于某个阈值,它就是“亮色”了,RGB 虽然从物理上来说容易理解,但实际上不符合人类的直觉。

/**
 * @function lightColorGen - 亮色生成器
 * @param { Number } minLight - 最低亮度,在[0, 100]区间
 * @returns { String } 颜色
 */
function lightColorGen(minLight){
    const { random } = Math;
    const mH = 360,  // 色相环角度范围
        mS = 100;  // 饱和度范围
        mL = 100 - minLight;  // 亮度范围
    const H = ~~mH * random(),
        S = ~~mS * random(),
        L = minLight + (~~mL * random());
    return `HSL(${H}, ${S}%, ${L}%)`;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏