具有偶数列的 CSS 网格的棋盘背景颜色?
Checkerboard Background Colors with CSS grid with even number of columns?
我有一个 css 网格,其中有多行,每行有 6 列。
我想使用 CSS 来交替每个单元格的背景颜色并按行改变。
所以第一行(奇数),所有偶数单元格都将有蓝色背景,奇数单元格有黑色背景。
第二(偶数)行,所有偶数单元格的背景都是黑色,奇数单元格的背景是蓝色。
我很难用 CSS 做到这一点,因为所有网格元素都是兄弟元素,所以使用 nth-child(odd)
会产生颜色列而不是交错的棋盘。
如果有人想乱来,我已经附上了一支笔。
理想情况下,我想要一个纯粹的 CSS 解决方案,而不向标记添加一堆 类。但是,如有必要,我愿意接受 JS 帮助。
https://codepen.io/qotsa42/pen/BaZWwMq
<div class='grid'>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
</div>
.grid {
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-gap: 15px;
}
.box {
height: 100px;
width: 100px;
}
.box:nth-child(even) {
background-color: blue;
}
.box:nth-child(odd) {
background-color: black;
}
从您的 6 列代码中,您可以看到每 12 个元素有一个重复模式。
您可以从那里开始 :nth-child(12n)
并将位置从第 12 个位置偏移到其他 6 个 .
例子
.grid {
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-gap: 15px;
}
.box {
height: 100px;
width: 100px;
}
.box {
background-color: blue;
}
.box:nth-child(12n + 2),
.box:nth-child(12n + 4),
.box:nth-child(12n + 6),
/* next row of 6 */
.box:nth-child(12n + 7),
.box:nth-child(12n + 9),
.box:nth-child(12n + 11) {
background-color: black;
}
/* demo */
.grid {
width: max-content;
margin: auto;
}
<div class='grid'>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
</div>
我有一个 css 网格,其中有多行,每行有 6 列。
我想使用 CSS 来交替每个单元格的背景颜色并按行改变。
所以第一行(奇数),所有偶数单元格都将有蓝色背景,奇数单元格有黑色背景。
第二(偶数)行,所有偶数单元格的背景都是黑色,奇数单元格的背景是蓝色。
我很难用 CSS 做到这一点,因为所有网格元素都是兄弟元素,所以使用 nth-child(odd)
会产生颜色列而不是交错的棋盘。
如果有人想乱来,我已经附上了一支笔。
理想情况下,我想要一个纯粹的 CSS 解决方案,而不向标记添加一堆 类。但是,如有必要,我愿意接受 JS 帮助。
https://codepen.io/qotsa42/pen/BaZWwMq
<div class='grid'>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
</div>
.grid {
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-gap: 15px;
}
.box {
height: 100px;
width: 100px;
}
.box:nth-child(even) {
background-color: blue;
}
.box:nth-child(odd) {
background-color: black;
}
从您的 6 列代码中,您可以看到每 12 个元素有一个重复模式。
您可以从那里开始 :nth-child(12n)
并将位置从第 12 个位置偏移到其他 6 个 .
例子
.grid {
display: grid;
grid-template-columns: repeat(6, 1fr);
grid-gap: 15px;
}
.box {
height: 100px;
width: 100px;
}
.box {
background-color: blue;
}
.box:nth-child(12n + 2),
.box:nth-child(12n + 4),
.box:nth-child(12n + 6),
/* next row of 6 */
.box:nth-child(12n + 7),
.box:nth-child(12n + 9),
.box:nth-child(12n + 11) {
background-color: black;
}
/* demo */
.grid {
width: max-content;
margin: auto;
}
<div class='grid'>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
</div>