我想创建一个19 * 19的网格。每个方格为50 px。在此网格中,奇数列的背景应为红色,偶数列的背景应为绿色。如何获得此信息?
这是我写的代码--下面链接了一个CodePen示例--有了这段代码,网格就像象棋一样,我不希望它是那样的。
body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: rgba(255, 255, 255, 0.5);
font-family: Arial, sans-serif;
}
.colored-grid {
display: grid;
grid-template-columns: repeat(5, 1fr);
/* grid-template-rows: repeat(193, 50px); */
column-gap: 5px;
height: auto;
width: 100px;
/* To accommodate 2 columns of 50px each */
}
.grid-cell {
width: 50px;
height: 50px;
box-sizing: border-box;
}
.grid-cell:nth-child(odd) {
background-color: red;
}
.grid-cell:nth-child(even) {
background-color: green;
}
个字符
https://codepen.io/viy_bal/pen/GRwLBBr
这是我想要的输出,我编辑了这个问题-这些都是网格中的正方形,而不是网格间隙
enter image description here的
5条答案
按热度按时间ilmyapht1#
为每一行添加一个 Package 器似乎是一种很好的方法。在这种情况下,网格的html应该看起来像这样:
字符串
将
display: contents
添加到 Package 器的类中,剩下的代码将完成这项工作。这是帮助我找到the solution的链接。
另外,here是我从你的代码编辑。
50pmv0ei2#
要创建19乘19的网格,您可以使用js创建单元格。
HTML:
字符串
CSS
型
JS
型
yb3bgrhw3#
很高兴能帮到你!
我在codePen中看过你的代码,在css中只用偶数和奇数是解决不了的,你需要的是给列着色,用
nth-child(odd)
/nth-child(even)
你只会得到交错的网格,就像你说的- * 象棋 *。解决方案:
下面是HTML:
字符串
首先,用JavaScript创建19 * 19的网格,循环时根据计算结果添加类名。
型
CSS:
型
在每一行中,奇数为红色,偶数为绿色,因此您可以简单地判断
x % 2
以确定其背景颜色。我们在每行中得到19个网格,所以如果我们想保持它们的规则相同,请设置另一个限制:型
这样我们就可以保持每一行都相同。effect
你可以在这里访问代码-> My Answer
23c0lvtd4#
一种方法-在代码中有解释性注解-如下;虽然我认为这应该是可能的,只有CSS,但我不能认为 * 如何 *,到目前为止。
JS Fiddle demo的数据。
afdcj2ne5#
它可以使用css
grid
布局和:nth-child()
选择器来实现。个字符
您可以添加更多的子
divs
,并更改grid-template-columns
属性中的列数,在本例中为3。