【问题标题】:Help with a pseudo-class, first-child帮助一个伪类,第一个孩子
【发布时间】:2011-07-11 21:27:25
【问题描述】:

我在一个 CMS 平台上工作,对模板文件的访问权限有限,我想尝试用伪类控制一些布局,但还没有运气。谁能看到这个结构有什么问题以及为什么我的伪类被忽略了?

<div id="main">
    <div class="someRandomDiv"></div>
    <div class="block">
    stuff
    </div>
    <div class="block">
     more stuff
    </div>
</div>

我正在尝试这样的事情

#main .block {border: 1px solid blue}
#main .block:first-child {border: 1px solid red}

所以在这个例子中,我认为东西块会有一个红色边框,更多的东西会有一个蓝色,但它都是蓝色的。

感谢您对此的任何帮助。

【问题讨论】:

    标签: css css-selectors pseudo-class


    【解决方案1】:

    它没有被忽略,只是没有任何匹配项:)

    我意识到这有点违反直觉,但:first-child 字面意思是父母的第一个孩子,而不是父母的类型,所以唯一的与您的代码中的:first-child 匹配的是&lt;div class="someRandomDiv"&gt;&lt;/div&gt;

    对于.block:first-child,您是说具有block 类的元素并且 是其父级的第一个子元素,而不是说“第一个具有block 类的元素”。 ..它们是独立的选择器,不会在这里重叠。那么,没有任何元素匹配这两个条件,所以没有匹配项,这更有意义吗?

    它不会支持所有浏览器,但你可以使用:nth-child() 或 javascript 来做你想做的事,例如在 jQuery 中它会是:

    $("#main .block:first").css({ border: '1px solid red' });
    

    【讨论】:

    • 另一种可能的解决方案是将您的 .block div 包装在它们自己的容器元素中。
    • 是的很有意义。谢谢尼克。我想我现在只使用 jQuery 路线。
    猜你喜欢
    • 2011-11-21
    • 2021-06-03
    • 2013-05-25
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    相关资源
    最近更新 更多