【问题标题】:Function for creating a new unused color to an array on click [closed]单击时为数组创建新的未使用颜色的功能[关闭]
【发布时间】:2020-03-26 23:20:21
【问题描述】:

我试图想出一种方法来在单击时向数组添加新的未使用颜色。

约束:

  • 我不能有预定义的颜色数组,因为我不知道用户会点击多少次。

  • 生成的每种新颜色都应不同于数组中的任何其他颜色。

  • 每种新颜色都应与数组中的前一种颜色相对不同。这意味着如果以前的颜色是红橙色,那么当前的颜色不应该是红粉色或黄橙色。

我想知道是否有一种直观的或数学的方法可以通过 RGB 值获得一种新颜色,而不必每次都遍历整个数组来查看该颜色是否存在。我已经考虑过使用哈希,但想看看是否有其他方法。

【问题讨论】:

  • 请访问help center,使用tour查看内容和How to Ask。做一些研究,搜索关于 SO 的相关主题;如果您遇到困难,请发布您的尝试minimal reproducible example,并注明输入和预期输出。
  • 必须是RGB吗?还是可以是 HSL 颜色?
  • HSL 也可以!只是想找到一种方法来遍历具有上述约束的颜色值。
  • @RahulNair 你见过this answerthis answer 吗?他们可能会有所帮助
  • @NickParsons 嗯,这看起来可能会解决它。谢谢!!!

标签: javascript math colors


【解决方案1】:

尝试设置颜色/样式 {color: hsl(value,100%,50%);} where value=(previous_value+interval)%360

时间间隔由你决定,比如我可以是 34

【讨论】:

  • 如果你在做%255,你最终会不会回到之前看到的value(给你与之前生成的颜色相同的颜色)?
  • 你不应该因为它会是:33,66,99,132,165,198,231,! 9、42 等等...感谢模运算符。当然最终你会回到初始值,所以如果我们想要超过 255 的可能性,我们需要对其他参数做同样的事情。
  • 没错,但是色调是一个角度,所以除数应该是360,而不是255。
  • 你完全正确!我会纠正这个
猜你喜欢
  • 2010-09-05
  • 2013-12-02
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多