:第一个子CSS选择器未定位正确的元素

MyD*_*ons 1 html css css-selectors

我的网站有以下HTML

<article>
    <p>Header</p>
    <p>Some content</p>
</article>
Run Code Online (Sandbox Code Playgroud)

我希望'标题'是大胆的.关于CSS选择器,我已经按照W3Schools的例子进行了说明

:first-child - 选择<p>作为其父级的第一个子元素的每个元素

我的CSS是

article:first-child {
    font-weight:bold;
} 
Run Code Online (Sandbox Code Playgroud)

问题是,我的第一个元素(the <p>)不是粗体.

我做错了什么?

Has*_*ami 9

你应该使用article > :first-child.这称为直接后代选择器(AKA 子选择器):

article > :first-child {
    font-weight: bold;
} 
Run Code Online (Sandbox Code Playgroud)

article:first-child目标article元素是他们父母的第一个孩子.虽然article > :first-child将针对的第一个子元素article.

另请注意,使用后代选择器 article :first-child而不是子选择器(article > :first-child)可能会导致麻烦,因为它将选择其父级的所有第一个元素作为后代article.

您可能还想考虑article > p:first-of-type将第一个<p>元素作为目标的子元素article.

article > p:first-of-type {
    font-weight: bold;
} 
Run Code Online (Sandbox Code Playgroud)

  • @Doodlebunch在这种特殊情况下两者都是相同的,但如果在第一段之前添加一个`<h1>`元素,`p:first-child`将不再与段落匹配.因为那段不会是文章的第一个孩子**. (2认同)