是否可以制作一个Javascript程序,自动将文本的颜色更改为背景的对比度?
我有这段Javascript和HTML代码,它使用颜色类型的输入来更改背景的颜色 代码如下:是否可以制作一个Javascript程序,自动将文本的颜色更改为背景的对比度?,javascript,html,colors,dom-events,Javascript,Html,Colors,Dom Events,我有这段Javascript和HTML代码,它使用颜色类型的输入来更改背景的颜色 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
input {
outline: none;
border: none;
background: none;
}
</style>
</head>
<body>
Change the color of the background:
<input type="color" value="#000000" name="bgcolor" id="bgcolor" />
<script>
const color = document.getElementById("bgcolor");
color.addEventListener("change", () => {
document.body.style.background = color.value;
});
</script>
</body>
</html>
文件
输入{
大纲:无;
边界:无;
背景:无;
}
更改背景颜色:
const color=document.getElementById(“bgcolor”);
color.addEventListener(“更改”,()=>{
document.body.style.background=color.value;
});
因此,当用户更改由
创建的调色板中的颜色时,这会更改页面背景的颜色
现在想象一种情况,用户选择黑色作为背景,文本的颜色默认也是黑色现在我们可以做两件事
给他/她一个选项来更改文本的颜色,或者自动将文本的颜色更改为背景的对比度
我想选择第二个选项,因为它有点花哨,对用户来说更高级一些,就像给用户留下深刻印象的额外高级东西
那么,我如何实现第二个选项呢?有人能给我解释一下,当用户设置背景时,如何自动将文本的颜色更改为背景的完全对比度。这方面的有趣资源:
constrgb=[255,0,0];
//随机更改为showcase更新
设置间隔(设置对比度,1000);
函数setContrast(){
//随机更新颜色
rgb[0]=Math.round(Math.random()*255);
rgb[1]=Math.round(Math.random()*255);
rgb[2]=Math.round(Math.random()*255);
// http://www.w3.org/TR/AERT#color-对比度
常量亮度=数学圆((parseInt(rgb[0])*299)+
(parseInt(rgb[1])*587)+
(parseInt(rgb[2])*114))/1000);
const textColour=(亮度>125)?“黑色”:白色;
常量背景色='rgb('+rgb[0]+'、'+rgb[1]+'、'+rgb[2]+');
$('#bg').css('color',textColour);
$('#bg').css('background-color',backgroundcolor);
}
#bg{
宽度:200px;
高度:50px;
}
文本示例
ff0000等颜色表示红色为FF
,绿色和蓝色为00
。您需要提取这些值,将它们解析为0-255个整数,然后从255中减去每个整数以获得对比度值。现在将它们转换回十六进制,将它们加在一起,并将其用作文本颜色。我认为这可能会解决您的问题:这可能会解决您的问题复制:@ChrisG-nope我认为我的情况有点不同,我不想将其转换为rgb,然后再转换回十六进制,我确实查看了答案,但没有任何帮助。