【发布时间】:2013-09-03 18:15:45
【问题描述】:
注意:请参阅下文以获得更清晰的说明
我正试图弄清楚为什么会这样。
HTML
<div class="chicken">
<div class="big-chix">Contento</div>
<div class="big-chix">Contento</div>
<div class="big-chix">Contento</div>
<div class="big-chix">Contento</div>
<div class="big-chix">Contento</div>
<div class="big-chix">Contento</div>
</div>
CSS
.chicken { width:100%; background:#999; float:left; }
.big-chix { width:48%; margin:0.5%; padding:0.5%; background:#666; float:left; }
.big-chix:nth-child(2n+1) { background-color:#eee; }
.big-chix:nth-child(2n+2) { background-color:#aaa; }
我在这里想要实现的是为第 n 个孩子 1、3、5... 和 2、4、6... 的 .big-chix 班级设置不同的背景
但是当我放入一个段落(或其他任何东西,如 div 等)时,它会变成这样:
HTML
<div class="chicken">
<p>paragraphy</p>
<div class="big-chix">Contento</div>
<div class="big-chix">Contento</div>
<div class="big-chix">Contento</div>
<div class="big-chix">Contento</div>
<div class="big-chix">Contento</div>
<div class="big-chix">Contento</div>
</div>
CSS
.chicken { width:100%; background:#999; float:left; }
.big-chix { width:48%; margin:0.5%; padding:0.5%; background:#666; float:left; }
.big-chix:nth-child(2n+1) { background-color:#eee; }
.big-chix:nth-child(2n+2) { background-color:#aaa; }
第 n 个孩子的位置交换位置。为什么会这样? .big-chix:nth-child()不是只假设选择所有.big-chix类(即6个.big-chix),然后将1、3、5设置为#eee的background-color,将2、4、6设置为@ 987654335@?
编辑:据我所知,nth-child 不会在这样的代码中应用于元素父元素中的元素子元素:
jsFiddle - nth-child(1) when <p> paragraph is the first element
HTML
<div class="chicken">
<p>paragraphy</p> [this is nth-child(1)]
<div class="big-chix">Contento</div> [this is nth-child(2)]
<div class="big-chix">Contento</div> [this is nth-child(3)]
<div class="big-chix">Contento</div> [this is nth-child(4)]
<div class="big-chix">Contento</div> [this is nth-child(5)]
<div class="big-chix">Contento</div> [this is nth-child(6)]
<div class="big-chix">Contento</div> [this is nth-child(7)]
</div>
CSS
.chicken { width:100%; background:#999; float:left; }
.big-chix { width:48%; margin:0.5%; padding:0.5%; background:#666; float:left; }
.big-chix:nth-child(1) { background-color:#eee; }
但是,它将在以.big-chix 作为第一个元素的父元素中工作。
jsFiddle - nth-child with .big-chix as the first element
HTML
<div class="chicken">
<div class="big-chix">Contento</div> [this is nth-child(1)]
<p>paragraphy</p> [this is nth-child(2)]
<div class="big-chix">Contento</div> [this is nth-child(3)]
<div class="big-chix">Contento</div> [this is nth-child(4)]
<div class="big-chix">Contento</div> [this is nth-child(5)]
<div class="big-chix">Contento</div> [this is nth-child(6)]
<div class="big-chix">Contento</div> [this is nth-child(7)]
</div>
CSS
.chicken { width:100%; background:#999; float:left; }
.big-chix { width:48%; margin:0.5%; padding:0.5%; background:#666; float:left; }
.big-chix:nth-child(1) { background-color:#eee; }
【问题讨论】:
-
这是个坏问题吗?我只是想学习。
-
不,不是,但已被多次询问。有些人不喜欢多次看到同一个问题,即使它不一定是重复的。
-
我找不到答案,也许我搜索了错误的关键字。这就是为什么我问..啊。至少我在学习。
-
:nth-child()被高度误解,但确实没有很多关键字可供参考。你的问题对我来说似乎很好,所以不要担心任性的反对票。 -
我......如果我在昆汀的回答中假设是正确的,我想我已经掌握了 nth-child 的窍门。
标签: html css css-selectors