【问题标题】:How does :nth-child work? [duplicate]:nth-child 是如何工作的? [复制]
【发布时间】:2012-10-04 18:55:49
【问题描述】:

我有以下代码:

div:nth-child(1) {
    background-color: red;  
}
<h1>Boxes</h1>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>

我希望选择带有内容1stdiv,但事实并非如此。但是,如果我删除了 h1 元素,那么它会按预期工作。为什么?

【问题讨论】:

    标签: html css css-selectors


    【解决方案1】:

    您遇到的问题是选择器本身::nth-child();这会找到它所附加的元素,div,它是其父元素的第 n 个子元素。

    根据您的选择:

    div:nth-child(1) {
     /*...*/
    }
    

    这不会匹配任何东西;因为h1 元素是共享父元素的第一个子元素/:nth-child(1)

    要适应,您需要使用以下任一:

    div:nth-child(2) {
        background-color: red;  
    }
    

    JS Fiddle demo.

    或者创建一个新的父元素来包含div 元素。

    <h1>Boxes</h1>
    <div>
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
        <div>6</div>
        <div>7</div>
        <div>8</div>
        <div>9</div>
    </div>
    

    JS Fiddle demo.

    在支持的浏览器中,也可以使用:nth-of-type(1)

    div:nth-of-type(1) {
        background-color: red;  
    }​
    

    JS Fiddle demo.

    参考资料:

    【讨论】:

    • 好吧,如果我不确定兄弟姐妹,我只想让:nth-child 处理div 忽略其他人怎么办?
    • 查看更新后的答案,:nth-of-type() 可能是你的朋友(但它的实现/兼容性是可变的)
    • 我不知道,似乎有人嫉妒你得到了标记。无论如何,即使你不使用选择器库,浏览器对:nth-child():nth-of-type() 的支持(实际上,所有 CSS3 结构伪类)都是相同的。
    • @BoltClock:我不认为这是嫉妒(在接受之前投反对票),我认为是人们不了解 :nth-child() 选择器的工作原理(见双-Praveen 得到的反对票)。谢谢!不知何故,我没有意识到这一点。
    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2014-07-26
    • 2015-01-23
    • 2013-01-12
    相关资源
    最近更新 更多