在css中,您可以使用nth
将样式应用于每个:nth-child
项:
li:nth-child(3) {
background: green;
}
这将使每第3行变为绿色。但是,如果我希望我的行以3白色,3绿色,重复?
的模式设置 1 2 3 [4][5][6] 7 8 9 [10][11][12]
更复杂:如果我想让我的行以3白色,2绿色,重复的方式设置风格怎么办?
1 2 3 [4][5] 6 7 8 [9][10] 11 12
最后:如果我只想突出总长度的剩余部分/ 3(括号中的位置)怎么办?
[1]
[1][2]
[1][2][3]
1 2 3 [4]
1 2 3 [4][5]
1 2 3 [4][5][6]
1 2 3 4 5 6 [7]
1 2 3 4 5 6 [7][8]
1 2 3 4 5 6 [7][8][9]
有没有办法在CSS中执行这些模式?
答案 0 :(得分:5)
您可以像这样使用逗号运算符:
:nth-child(6n-2), /* 4, 10, 16, 22, ... */
:nth-child(6n-1), /* 5, 11, 17, 23, ... */
:nth-child(6n) /* 6, 12, 18, 24, ... */
ul {
list-style: none;
padding: 0;
margin: 0;
}
li {
display: inline-block;
padding: 5px;
}
li:nth-child(6n-2),
li:nth-child(6n-1),
li:nth-child(6n) {
background: green;
}
<ul><li>01</li></ul>
<ul><li>01</li><li>02</li></ul>
<ul><li>01</li><li>02</li><li>03</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li><li>10</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li><li>10</li><li>11</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li><li>10</li><li>11</li><li>12</li></ul>
:nth-child(5n-1), /* 4, 9, 14, 19, ... */
:nth-child(5n) /* 5, 10, 15, 20, ... */
ul {
list-style: none;
padding: 0;
margin: 0;
}
li {
display: inline-block;
padding: 5px;
}
li:nth-child(5n-1),
li:nth-child(5n) {
background: green;
}
<ul><li>01</li></ul>
<ul><li>01</li><li>02</li></ul>
<ul><li>01</li><li>02</li><li>03</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li><li>10</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li><li>10</li><li>11</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li><li>10</li><li>11</li><li>12</li></ul>
您可以将其与:nth-last-child
:
li:nth-child(3n-2):nth-last-child(-n+3), /* is in 1,4,7,... and in the last 3 */
li:nth-child(3n-1):nth-last-child(-n+2), /* is in 2,5,8,... and in the last 2 */
li:nth-child(3n):nth-last-child(-n+1) /* is in 3,6,9,... and in the last 1 */
ul {
list-style: none;
padding: 0;
margin: 0;
}
li {
display: inline-block;
padding: 5px;
}
li:nth-child(3n-2):nth-last-child(-n+3),
li:nth-child(3n-1):nth-last-child(-n+2),
li:nth-child(3n):nth-last-child(-n+1)
{
background: green;
}
<ul><li>01</li></ul>
<ul><li>01</li><li>02</li></ul>
<ul><li>01</li><li>02</li><li>03</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li><li>10</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li><li>10</li><li>11</li></ul>
<ul><li>01</li><li>02</li><li>03</li><li>04</li><li>05</li><li>06</li><li>07</li><li>08</li><li>09</li><li>10</li><li>11</li><li>12</li></ul>
答案 1 :(得分:0)
也许这可以帮到你?
使用公式(a + b)。描述:a表示循环大小,n是计数器(从0开始),b是偏移值。
在SO
中也发现了类似的问题w3schools附带的示例代码
String ToCastStringName = "Truck";
答案 2 :(得分:0)
在CSS3中,您可以输入a * n + b
形式的简单公式到:nth-child()
选择器,写为an + b
,其中a
和b
是常量n
是一个自由变量。然后,该样式将影响其位置编号与n
的某些自然值的表达式匹配的元素(整数&gt; = 0)。这意味着5n + 11
将匹配第11和第16个元素,但不匹配第6个元素。 Source.
这是您想要的代码:
li:nth-child(6n + 4), li:nth-child(6n + 5), li:nth-child(6n + 6) {
background: green;
}
至于你的第二个问题:
li:nth-child(5n + 4), li:nth-child(5n + 5) {
background: green;
}
我对你的上一个问题感到茫然,但这听起来很可行。