【问题标题】:Css 3 Selector not working proberlyCss3 选择器无法正常工作
【发布时间】:2012-07-17 00:29:45
【问题描述】:

我正在尝试做一些我认为很简单的任务,但它并不是那么简单...... 手头的问题可以在这 2 个链接上看到

http://kurdaktuellt.se/

http://kurdaktuellt.se/category/aktuellt/

我使用的选择器比较简单

body:not(.single) #content > .post:nth-child(odd){
}
body:not(.single) #content > .post:nth-child(even){
}

问题是它在首页(第一个链接)上以一种方式工作,在类别页面(第二个链接)上以另一种方式工作,因为它需要计算标题元素,如果它正确地跟随我的选择器,它不应该... 我这里有什么遗漏吗?

感谢所有的帮助... aloot! 提前谢谢

【问题讨论】:

    标签: html css css-selectors


    【解决方案1】:

    在您的类别页面中,您有一个h1 作为#content 的第一个孩子,这会干扰您孩子的排序,导致您的第一个div.post 不再是第一个孩子,而是实际上是第二个孩子(见spec)。

    您可以改用:nth-of-type(),这样只会考虑您的divs(具有.post 类):

    body:not(.single) #content > div.post:nth-of-type(odd)
    body:not(.single) #content > div.post:nth-of-type(even)
    

    或者您可以选择修改您的 HTML,或者通过将 h1 移动到其他位置,或者在您的 div.post 元素周围添加另一个容器,这样您的 :nth-child() 排序就不会被弄乱。

    【讨论】:

    • 不必将 div 标签添加到选择器,这很好,因为它也可能是其他元素......奇怪的是我一直认为 nth-child 只会从设置规则,在这种情况下是 .post... 你知道任何好的网站都可以解释为什么要这样做吗?顺便说一句,Thx 为我节省了很多时间:)
    • @Breezer:我之所以在选择器中添加div 是因为:nth-of-type() 不查看类,它查看标签名称,我想说明这一点。如果你问“为什么:nth-child() 会这样”,部分原因是伪类是如何工作的,以及:nth-child() 是如何设计的。不过,我不记得有什么好的链接,但我想你可以看看some of my other answers...
    猜你喜欢
    • 2017-04-07
    • 2015-01-17
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 2014-10-31
    • 2012-03-03
    相关资源
    最近更新 更多