【发布时间】:2023-04-03 20:11:02
【问题描述】:
作为一名网络开发人员,我了解到,如果网站上的颜色对比很糟糕,那么我赚的钱就很少,但我想改变它,但是我遇到了问题。我的网站上有一个部分,用户可以在其中选择一种颜色,并且该框会填充该颜色。假设已经选择了颜色。然后这个盒子在黑盒子的代码中会是这样的:
<div ID="box" style="background:#000000;width:16px;height:16px">Text?</div>
问题是#000000 将根据用户在运行 javascript 中的选择更改为另一个值。我觉得要让包括谷歌在内的所有 CSS 处理器都满意,我需要指定一个前景色,以便它在任何背景色上都可读,但我不知道这背后的数学原理。
<script>
var x=(insert chosen color value);
var y=(some calculated value);
document.getElementById('box').style.background='#'+v;
document.getElementById('box').style.color='#'+y;
</script>
无论我选择使用何种背景颜色,我如何确定前景色的公式,以使文本始终可读?
或
我应该使用不同的 HTML4 元素来表示我的颜色框吗?
我可以不用只制作彩色框的图像就可以解决这个问题吗?
更多添加代码
运行此代码以获取我用于颜色框的颜色条示例。
<div ID="BOX" style="width:100%"></div>
<script>
var body=document.getElementById('BOX');
for (n=0;n<15;n++){
var box=document.createElement('DIV');
box.style.width='20px';
box.style.height='20px';
v=n.toString(16);
box.style.background='#'+v+v+v+v+v+v;
body.appendChild(box);
}
</script>
【问题讨论】:
-
简单的方法是,计算背景颜色的亮度(使用标准的RGB到亮度公式),如果背景很暗,则使用白色作为前景色,否则黑色。这样,您将获得最佳对比度和最佳可读性。
-
这种相反的颜色总是会突出。 IE黑白:
background:#000000, foreground:#FFFFFF红色和青色:background:#FF0000, foreground:#00FFFF -
@TonyRuth Cyan 在红色背景上并不是在所有显示器上都完全可读。谨慎行事并使用白色作为前景。
-
但我使用了尽可能多的颜色范围的调色板,包括黑色、白色和灰色,以及彩虹色的所有色调。
-
和李斯特先生,如果我使用你的公式,那么灰色将如何工作?对比会很糟糕......灰色的灰色?
标签: javascript html colors accessibility