我目前正在使用以下内容在javascript中生成随机十六进制颜色:
function getColor(){
return '#'+(0x1000000+(Math.random())*0xffffff).toString(16).substr(1,6);
}
每次生成这些颜色中的一种时,它们都会被推入一个数组:
var colors = new Array();
我希望 getColor 函数始终首先从“整体”颜色中选择。例如“红色”(#FF0000) 和“黄色”(#FFFF00),并且只有在通过检查颜色数组确认所有这些“完整”颜色已经被采用后,它才应该继续提供更模糊/混合的颜色,例如如“GreenYellow”(#ADFF2F)等。
所以本质上,该函数最终应该用每种基于十六进制的颜色填充颜色数组,从最强的颜色(我描述为“整体”颜色)开始,然后转向较弱的“混合”颜色,最后以黑色结束因为它将被认为是最不可取的。
不幸的是,我真的不知道从哪里开始,除了按照我想要的确切顺序提供完整的颜色数组,然后遍历它们。
这似乎更像是用大锤敲碎坚果。任何其他更优雅的解决方案将不胜感激。
提前致谢。
请注意:我知道我在这里使用的术语并不正确,但希望人们能理解我所说的“整体”颜色是什么意思。我实在想不出更好的表达方式。
编辑:了解一些需要这个的原因可能会有所帮助。这些颜色将用于在视觉上识别开始于同一组的项目,因为用户将它们自己分组在一起。大多数时候只有几组,平均可能多达 20-30 组。因此,在使用可能看起来更相似的颜色之前,先使用清晰可见并相互区分的强烈颜色是有意义的。