我有一个响应式网格布局,根据窗口宽度可以有任意数量的列。
我想要让这个网格呈现棋盘格样式,所以我使用了 "odd" 和 "even" 选择器来着色网格单元格。
但仅当列数为奇数时才有效。当列数为偶数时,它将变成条纹状。
是否有CSS属性/选择器来解决此问题,或者更好的方法?
以下是我的项目简化代码,显示了问题:
.grid {
display: grid;
counter-reset: spans;
grid-template-columns: repeat(var(--cols), 1fr);
grid-gap: 1px;
}
.grid > * {
counter-increment: spans;
text-align: center;
padding: 10px 0;
color: #fff;
}
.grid > *::after {
content: counter(spans);
}
/* Coloring */
.grid > *:nth-child(odd) {
background-color: #789;
}
.grid > *:not(:nth-child(odd)) {
background-color: #567;
}
<h2>Works when columns are odd</h2>
<div class="grid" style="--cols: 5;">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
<h2>Doesn't work while even</h2>
<div class="grid" style="--cols: 4;">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
span
上色,想知道为什么这样做。 - dmuensterer:nth-row
或:nth-column
这样的选择器就好了 :/ - Hao Wu