2015-08-31 156 views
0

如果匹配父元素的第一个元素类型而不匹配那个子元素,如果它不是第一个子元素?CSS第一个子元素匹配,不是任何子元素匹配

我需要的第一个子元素相匹配的CSS选择器,如果它是body父元素header元素:

<body><header> 

但我不能有选择的header元素相匹配,如果它是不第一孩子body元素:

<body><div></div><header> 
+1

'body + header',然后呢? –

+0

@MarcB Nope,就是说如果他们彼此相邻。 – John

+0

也许与':nth-​​of-type(1)'......组合? – John

回答

4

你只是寻找:first-child

body > header:first-child { 
 
    color: yellowgreen; 
 
}
<body> 
 
    <header>Should match</header> 
 
</body> 
 

 
<body> 
 
    <div></div> 
 
    <header>Shouldn't match</header> 
 
</body>

+0

在编辑之后工作,没有,这是我需要的组合。谢谢。 – John

+0

我没有修改CSS选择器,我只是添加了这些示例。 – Nit

+0

因为它证明localhost SSL的复杂性,129重定向到127,PHP没有说正确的路径,yaddah yaddah yaddah它最初的工作。再次感谢你。 :-) – John

2

除此之外,您还可以使用nth-child(1)。下面片段将工作,因为

body > header:first-child { 
 
    background: tomato; 
 
}
<body> 
 
    <header>Header 1</header> 
 
</body>

这不会为DIV工作父体的第一个孩子的父元素的第一个孩子:

body > header:first-child { 
 
    background: tomato; 
 
}
<body> 
 
    <div></div> 
 
    <header>Header 1</header> 
 
</body>

+1

第n个类型(1)将与第二个示例中的标题匹配。这正是儿童与正常人之间的区别。 – BoltClock

+0

呵呵,尼斯找到。谢谢! :)编辑。 –

-2
body header:first-of-type:not(nth-child(n+2)) { background: black; } 
+0

匹配'body'的任何*代*标题。 – John

+0

我喜欢它,虽然比我选择的组合选择器稍微冗长些,但是很有创意,谢谢。 – John

+0

少就是多;) – zer00ne