【问题标题】:nth-child not working when divs are under other divs当 div 在其他 div 下时,nth-child 不工作
【发布时间】:2013-02-05 16:32:55
【问题描述】:

我有一系列向左浮动的 div,然后我在这些也向左浮动的 div 下有不同名称的 div。 nth-child 代码不适用于这些 div 放置在其他浮动左 div 下方。但是当它们高于它们时,第 n 个孩子工作正常。我试过了:

#div:first-child and #div:nth-child(1)

同样,这仅在 div 高于其他 div 时有效,当 div 低于其他 div 时不起作用。

这里有两个 jfiddles 演示了 nth-child 什么时候可以工作,什么时候不可以......

您将看到一系列白色 div,然后是两个红色 div。我正在使用 nth-child 为两个红色 div 提供 100px 的左侧边距。

当 nth-child 不起作用时(div 低于其他 div):

http://jsfiddle.net/hsQQn/

当 nth-child 工作时(div 高于其他 div):

http://jsfiddle.net/hsQQn/1/

我想让这个工作,以便当 div 低于其他 div 时 nth-child 工作。在这一点上,我不知道为什么它不工作......任何帮助将不胜感激:)

【问题讨论】:

    标签: html css css-selectors


    【解决方案1】:

    使用<div>s 工作的小提琴是容器包装器中的最后两个<div>s。所以它们既不是first-child 也不是nth-child(2)wrapper。它们更有可能是其父包装元素的nth-child(17)nth-child(18)

    您还有无效的 HTML。每个 id 都应该是唯一的。您应该改用 CSS 类:

    div.myclass {}
    

    可以像这样多次使用:

    <div class="myclass"></div>
    

    另一方面,ID:

    #myid {}
    

    可以一次性使用:

    <div id="myid"></div>
    

    当然,您可以使用 id 引用元素的子元素,例如:

    #myid > a {}
    

    为此:

    <div id="myid"><a></a></div>
    

    但仍然只有一个元素使用idmyid”。

    【讨论】:

    • 感谢您的回答,您说不工作的小提琴没有任何带有“doublearticlewrapperadmp”的元素ID..但这是不正确的。 |doublearticlewrapperadmp" 在我的 html 和 css 中都使用了。如果它是无效的 html.. 那么我发布的两个示例都不会工作,因为我没有真正更改两个示例中的任何代码。我所做的只是移动两个 html元素向上..但是第n个孩子在一个中起作用,而在另一个中不起作用。这让我感到困惑。我很欣赏这个答案,但也许一个快速的jsfiddle举例说明你的意识形态会有所帮助。
    • 对不起,我已经更新了我的答案。没有滚动这么低。我的错。 :) 所有的 id 工作只是一个很好的浏览器行为。它仍然不是有效的 HTML。你也可以从我这里读到这个答案——它基本上描述了同样的事情:stackoverflow.com/a/13034389/1456376
    • 感谢 broham,我没有意识到第 n 个孩子适用于包装器中的所有 div .. 即使您告诉它是特定 div 的第 n 个孩子 .. 即。 #div:nth-child(2)... 很奇怪.. 但非常感谢您让我看到这一点
    • 不客气。很抱歉一开始的混乱。注意:#div:nth-child(2) 指的是具有此属性id="div" 的元素(也可以是&lt;a&gt;-标签。如果您想解决所有&lt;div&gt; 元素,只需使用div {}div:nth-hcild(2+n) {} 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    相关资源
    最近更新 更多