2017-10-06 907 views
1

我想在选择器中选择第一个.choose div,并在此HTML代码的另一个选择器中选择第二个.choose div。
我不想:nth-child():nth-of-type(),但这样的事情:nth-of-class()或    :nth-of-selected()CSS - 选择第一个匹配的元素(不是第一个子元素或第一个类型)

<div id='parent'> 
    <div></div> 
    <div class='elements'></div> 
    <div></div> 
    <div class='elements'></div> 
    <div></div> 
</div> 

注:我知道浩做在JavaScript和jQuery,但我想在CSS的答案。

回答

3

没有选择器将第一个孩子/兄弟姐妹与某个类相匹配。如果你仅仅需要这个特定的HTML结构,那么可以使用类似于#parent > .elements ~ .elements的东西来专门针对第二个。

#parent > .elements { /* for all .elements children */ 
 
    background: red; 
 
} 
 
#parent > .elements ~ .elements { /* only those that are siblings 
 
            of a previous .elements element */ 
 
    background: green; 
 
}
<div id='parent'> 
 
    <div>---</div> 
 
    <div class='elements'>Foo</div> 
 
    <div>---</div> 
 
    <div class='elements'>Bar</div> 
 
    <div>---</div> 
 
</div>

编辑,对于米哈伊T的暗示,如果有更多的.elements儿童它不仅会影响到第二个,这可以通过向第一选择固定的,这样说:

#parent > .elements, /* for all .elements children */ 
 
#parent > .elements ~ .elements ~ .elements { /* and all that have at least two .elements before them */ 
 
    background: red; 
 
} 
 
#parent > .elements ~ .elements { /* only those that are siblings 
 
            of a previous .elements element */ 
 
    background: green; 
 
}
<div id='parent'> 
 
    <div>---</div> 
 
    <div class='elements'>Foo</div> 
 
    <div>---</div> 
 
    <div class='elements'>Bar</div> 
 
    <div>---</div> 
 
    <div class='elements'>Foo</div> 
 
    <div>---</div> 
 
    <div class='elements'>Foo</div> 
 
    <div>---</div> 
 
    <div class='elements'>Foo</div> 
 
    <div>---</div> 
 
</div>

+0

很好的答案。问题是它只有在你有2个时才有效。 (如你所说,只为了这个特定的答案)。否则,它会将绿色背景应用于所有带'.elements'类的直接子项,除了第一个。所以不仅仅是第二个 –

+1

@MihaiT的好处,但是使第一个选择器'#parent> .elements, #parent> .elements〜.elements〜.elements'可以轻松解决这个问题。 – CBroe

+0

我认为它不会工作 我想要的是一个选择器,使第一个元素'float:right;'和第二个元素'float:left;'(但它们不是第一个和第二个子类型) –

相关问题