每 div 每行的交替颜色仅使用 css
Alternating colours per row per div using only css
我想知道仅使用 CSS:
是否可行
Black White
White Black
Black White
White Black
名称代表我想要的颜色背景。在此 jsfiddle 中,我对其进行了硬编码以准确显示我想要的内容,但 div 的数量将是动态的,所以我不知道会有多少。
如何实现?
你需要在这里使用:nth-child
pseudo class。
选项 1
第一个选项需要使用 2 select或
第一个处理网格左列中的 div 的样式。对这些进行编号得到 1,5,9,13,... 您可以表示为 4n-3
(4*1-3=1, 4*2-3=5, 4*3-3=9 , 4*4-3=13, ...)。如果您愿意,也可以表示为 4n+1
。
第二个 select 或者,为了处理右列中 div 的样式,更直接,因为它只是每四个 div
,可以表示为 4n
(4*1=4, 4*2=8, 4*3=12, 4*4=16, ...).
div{
background:#fff;
display:inline-block;
height:100px;
width:50%;
}
div:nth-child(4n-3),div:nth-child(4n){
background:#000;
}
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
选项 2
第二个选项使用单个 select 或使用 negation pseudo class :not()
.
实现相同的结果
选项一的反select离子可以用4n-1
和4n-2
(或4n+3
和4n+2
)表示,所以我们' ll select 所有 div,不包括匹配这些表达式的那些。
div{
background:#fff;
display:inline-block;
height:100px;
width:50%;
}
div:not(:nth-child(4n-1)):not(:nth-child(4n-2)){
background:#000;
}
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
进一步阅读 MDN
- Overview of CSS pseudo classes
- More information on the
:nth-child
pseudo class
- More information on the negation pseudo class
一边
我尽力想出一个适合这个的 CSS 表达式,但没能成功。如果有人成功了,请告诉我。我们要匹配的序列是:1,4,5,8,9,12,13,16,17,20,...,2n-(n%2)
我想知道仅使用 CSS:
是否可行Black White
White Black
Black White
White Black
名称代表我想要的颜色背景。在此 jsfiddle 中,我对其进行了硬编码以准确显示我想要的内容,但 div 的数量将是动态的,所以我不知道会有多少。
如何实现?
你需要在这里使用:nth-child
pseudo class。
选项 1
第一个选项需要使用 2 select或
第一个处理网格左列中的 div 的样式。对这些进行编号得到 1,5,9,13,... 您可以表示为 4n-3
(4*1-3=1, 4*2-3=5, 4*3-3=9 , 4*4-3=13, ...)。如果您愿意,也可以表示为 4n+1
。
第二个 select 或者,为了处理右列中 div 的样式,更直接,因为它只是每四个 div
,可以表示为 4n
(4*1=4, 4*2=8, 4*3=12, 4*4=16, ...).
div{
background:#fff;
display:inline-block;
height:100px;
width:50%;
}
div:nth-child(4n-3),div:nth-child(4n){
background:#000;
}
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
选项 2
第二个选项使用单个 select 或使用 negation pseudo class :not()
.
选项一的反select离子可以用4n-1
和4n-2
(或4n+3
和4n+2
)表示,所以我们' ll select 所有 div,不包括匹配这些表达式的那些。
div{
background:#fff;
display:inline-block;
height:100px;
width:50%;
}
div:not(:nth-child(4n-1)):not(:nth-child(4n-2)){
background:#000;
}
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
进一步阅读 MDN
- Overview of CSS pseudo classes
- More information on the
:nth-child
pseudo class - More information on the negation pseudo class
一边
我尽力想出一个适合这个的 CSS 表达式,但没能成功。如果有人成功了,请告诉我。我们要匹配的序列是:1,4,5,8,9,12,13,16,17,20,...,2n-(n%2)