lal*_*ala 4 html css css-selectors css3
我有这个代码.
<div class="myDiv">
<div>
I want to be red.
</div>
</div>
<p>I'm some other content on the page</p>
<div class="myDiv">
<div>
I want to be blue.
</div>
</div>
.myDiv div:nth-child(odd) {
color: red;
}
.myDiv div:nth-child(even) {
color: blue;
}
Run Code Online (Sandbox Code Playgroud)
我明白为什么它不起作用.它使每一个奇数格内 myDiv为红色.我想要它做的是让myDiv中div的每个奇怪例子都是红色的.我该怎么写呢?
这是一个JSFiddle.
这里有几个问题.这:nth-child
是错误的元素.内部div始终是第一个子节点,因此:nth-child(odd)
选择器适用于两者.而是转向
.myDiv:nth-child(odd) div
Run Code Online (Sandbox Code Playgroud)
...... 然而,这也不起作用<p>
.您的样品的工作解决方案是
.myDiv:nth-of-type(odd) div
Run Code Online (Sandbox Code Playgroud)
注意,nth-of-type
唯一有效的因为.myDiv
元素都是div(它基于元素,而不是选择器),所以选择器忽略了<p>
.如果.myDiv
s之间可以有另一个div我不认为任何CSS将适用于你想要做的事情.
由于Domenic给出的原因,你不能一般地这样做.简单地说:没有选择器可以过滤匹配元素的现有子集.
关于你p
和div.myDiv
兄弟姐妹中唯一的div
元素是那个有关那个类的元素,那么你可以用:nth-of-type()
它来看看那些中间div
的:
div.myDiv:nth-of-type(odd) div {
color: red;
}
div.myDiv:nth-of-type(even) div {
color: blue;
}
Run Code Online (Sandbox Code Playgroud)
或者,如果还有其他div
没有应该被排除的类,那么除非有某种模式,否则它们就会被排除在外,你就不走运了.