【问题标题】:Need some explanation on HTML, nth-child需要一些关于 HTML,nth-child 的解释
【发布时间】:2013-09-03 18:15:45
【问题描述】:

注意:请参阅下文以获得更清晰的说明

我正试图弄清楚为什么会这样。

jsFiddle 1 - Before

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 等)时,它会变成这样:

jsFiddle 2 - After

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设置为#eeebackground-color,将2、4、6设置为@ 987654335@?


编辑:据我所知,nth-child 不会在这样的代码中应用于元素父元素中的元素子元素:

jsFiddle - nth-child(1) when &lt;p&gt; 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


【解决方案1】:

.big-chix:nth-child() 不只是假设选择所有 .big-chix 类(即 6 个 .big-chix),然后将 1、3、5 设置为背景颜色#eee 和 2、4、6 到 #aaa?

没有。

:nth-child() 选择“父元素中的第 n 个元素”,而不是“也匹配选择器其他部分的第 n 个元素”。

每个选择器都是独立应用的,只有匹配所有组件的元素才会匹配完整的选择器。

但是请注意,:nth-of-type() 应该可以满足您的需求。

【讨论】:

  • 那么你的意思是,如果我申请.big-chix:nth-child(2),它将从div.chicken中选择第二个元素?
  • "但是请注意,:nth-of-type() 应该可以满足您的需求。"但仅仅是因为这些是div 元素,而添加的元素是p 元素。 .big-chix 类无关紧要。
  • @RenoYeo — 不,它将选择div 中的第二个元素如果 它是也是.big-chix 的成员.
  • @Quentin ...嘿,你能用你的解决方案更新他的第二把小提琴吗:nt-of-type
  • @Quentin div?哪个div.chicken,还是.big-chix?
【解决方案2】:

使用这些

.big-chix:nth-child(even) { background-color:#eee; }
.big-chix:nth-child(odd) { background-color:#aaa; }

http://jsfiddle.net/TeqUF/2/工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多