抱歉,如果标题没有准确地抓住我的问题,我不知道如何写在一个句子。
问题描述:假设我有一个颜色数组和一堆div。我想在数组颜色中循环使用div背景色,但同时要确保每个div都从颜色数组中的不同位置开始。
**示例:**我的颜色数组是[red, blue, yellow, green]
。第一个div
颜色从red
开始,然后在blue
、yellow
、green
之间循环,最后返回到red
。Div 2从blue
开始,然后到yellow, green, red, blue
,依此类推,直到div
元素的个数为止。
我能想到的两种可能的解决方案是:
1.我是否必须为每个div生成一个新的颜色数组?(可能通过向计数器添加1并执行拼接、推送或弹出操作)
1.我是否可以在原始数组中循环,只从每个div的不同位置开始?(根据其位置动态生成偏移量-第一个div、第二个div、第三个div等)
这两种方法是否都是解决问题的可行方法?
3条答案
按热度按时间6gpjuf901#
听起来你需要的只是取模。一旦你确定了一个特定元素的起始索引,就把索引取模数组长度。如果colors数组是
colors
,那么你可以这样做,字符串
pu3pd22g2#
只是为了好玩,这个动画在CSS。这个问题被标记为css
个字符
vwoqyblh3#
你不需要为每个div生成一个新的数组,所以虽然你提出的两个解决方案都可以工作,但第二个是更好的方法。
当为每个div设置初始颜色时,您只需根据当前div的索引选择颜色。
第一个月
由于div可以比颜色多,所以一旦div的索引超过颜色的数量,就需要从数组的开头开始。如CertainPerformance's answer所示,可以使用索引的模数轻松地将索引“循环”回到开头。因此赋值变为:
divs[index].style.backgroundColor = colors[index % colors.length];
个一旦你完成了初始的颜色分配,一种遍历颜色的方法是简单地找到当前颜色的索引并递增1,再次使用模数来遍历颜色。
字符串
下面是一个完整的例子。