javascript 我如何捕捉深色?

pbpqsu0x  于 2023-01-24  发布在  Java
关注(0)|答案(1)|浏览(120)

我正在使用**JavaScript生成随机颜色。如何知道生成的颜色是暗/亮**?
我使用的JavaScript代码

btn.addEventListener('click', e => {
    const R = Math.floor(Math.random() * 256);
    const G = Math.floor(Math.random() * 256);
    const B = Math.floor(Math.random() * 256);

    body.style.backgroundColor = `rgb(${R}, ${G}, ${B})`;
    colorText.innerText = `R: ${R} \nG: ${G} \nB: ${B}`;
});
5jdjgkvh

5jdjgkvh1#

正如Iłya Bursov所指出的,你可以计算HSL中的亮度分量(L)。计算方法只是0.2126 * r + 0.7152 * g + 0.0722 * b。因为这个值的范围是从0到255,所以你可以定义"浅色"为HSL亮度在该范围上半部分(〉128)的任何颜色,反之亦然。如下所示:

const btn = document.getElementById('btn');
const colorText = document.getElementById('colorText');

btn.addEventListener('click', e => {
    const R = Math.floor(Math.random() * 256);
    const G = Math.floor(Math.random() * 256);
    const B = Math.floor(Math.random() * 256);
    
    let light = 0.2126 * R + 0.7152 * G + 0.0722 * B > 128;
    console.log(light)

    document.body.style.backgroundColor = `rgb(${R}, ${G}, ${B})`;
    colorText.innerText = `R: ${R} \nG: ${G} \nB: ${B}`;
});
<button id="btn">Button</button>
<br>
<span id="colorText"></span>

相关问题