这应该是一个简单的问题,但我还没有找到一种方法使它工作.
基本上,我有一个愚蠢的localhost页面,我在我的webdevelopment中使用.当我在我们的开发服务器和本地版本的C#代码(通过主机文件从dev url重定向)之间浏览时,我知道有时会忘记'dev.foo.com'指向的内容 - 本地或服务器.
所以我创建了一个页面,它将作为我的默认网页的默认页面在本地运行,因此我可以从服务器轻松识别我的localhost.
这个页面随机地做了很多事情(包括为D&D生成角色的起始统计数据),包括设置随机背景颜色.我这样做是通过生成0到255之间的3个随机数,并将它们设置为CSS中身体背景颜色的RGB值.
给定3个R,G和B,我如何确定R2,G2和B2,使第二种颜色与第一种颜色形成高对比度?我喜欢让页面具有随机的背景颜色(它让我不习惯着陆页的外观)但我也希望能够阅读文本.
由于色彩视觉本身的分辨率太低,因此需要亮度差异才能使文本可读.
所以作为算法,我建议如下:
选择随机背景颜色.
然后决定它是浅色还是深色.例如,您可以检查三原色的平均值是大于等于128.
对于浅色使用黑色文本,对于黑暗的一个白色文本.
"对比度"是一个加载的单词.如果您只关心能够阅读文本,那么一种简单的方法是在基于亮度的色彩空间(如HSL)中工作,并选择亮度差异较大的前景色和背景色.
HSL和RGB之间的转换是众所周知的 - 详见维基百科.
如果你在谈论实际的色彩对比度,那就不像切割和干燥了(据我所知,有许多感知因素没有被缩减为单一颜色空间),但我怀疑你不需要那种复杂程度.