一般来说,你想要的是不可能的,但是有一种方法可以实现有限数量的“排除”元素所需的行为:
general sibling combinator〜.
这个想法是,对于每个出现的非.parent元素,后续的.parent元素将会切换其颜色:
.parent:nth-child(odd) {
background-color: green;
}
.parent:nth-child(even) {
background-color: red;
}
/* after the first non-.parent,toggle colors */
li:not(.parent) ~ .parent:nth-child(odd) {
background-color: red;
}
li:not(.parent) ~ .parent:nth-child(even) {
background-color: green;
}
/* after the second non-.parent,toggle again */
li:not(.parent) ~ li:not(.parent) ~ .parent:nth-child(odd) {
background-color: green;
}
li:not(.parent) ~ li:not(.parent) ~ .parent:nth-child(even) {
background-color: red;
}
当然,有一个人愿意接受这一点是有限的,但是它与纯CSS一样接近.