使用 CSS 按特定顺序更改背景颜色

Changing background colors in a specific sequence with CSS

我正在构建一个 3 列的砌体网格。我需要通过 CSS 为每个网格项目应用背景颜色,但按特定顺序:

我已经尝试了以下方法,但它并没有完全让我到达那里:

.masonry_item:nth-child(3n+1) {
  background: blue;
}
.masonry_item:nth-child(3n+2) {
  background: green;
}
.masonry_item:nth-child(3n+3) {
  background: pink;
}

这里是HTML的简化版本:

<div class="masonry_container">
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
</div>

您可以尝试使用 :even 和 :odd pseudo-classes

您的模式每 9 个元素重复一次,而不是 3 个。

.masonry_item:nth-child(9n+1),
.masonry_item:nth-child(9n+6),
.masonry_item:nth-child(9n+8){
  background: blue;
}
.masonry_item:nth-child(9n+2),
.masonry_item:nth-child(9n+4),
.masonry_item:nth-child(9n+9){
  background: green;
}
.masonry_item:nth-child(9n+3),
.masonry_item:nth-child(9n+5),
.masonry_item:nth-child(9n+7){
  background: pink;
}


.masonry_container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-auto-rows: 50px;
  gap: 10px;
}
<div class="masonry_container">
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
  <div class="masonry_item"></div>
</div>