2010-12-22 22 views
64

div içinde ilk h1'u detail_container adlı bir sınıfla seçmeye çalışıyorum. Bu h1 bu div içinde ilk öğe ise, ancak bu ul sonra gelirse, işe yaramazsa çalışır. : ilk-çocuk beklendiği gibi çalışmıyor

<style type="text/css"> 
.detail_container h1:first-child 
{ 
color:blue; 
} 
</style> 
</head> 
<body> 
<div class="detail_container"> 
    <ul> 
    <li></li> 
    <li></li> 
    </ul> 
    <h1>First H1</h1> 
    <h1>Second H1</h1> 
</div> 
</body> 
</html> 

Ben bu div içinde nerede olduğunu var CSS olursa olsun ilk h1 seçecek izlenim oldu. Nasıl çalıştırabilirim?

+0

CSS ne yapamazsa yapamazsın, JavaScript yapabilir. – JCOC611

+9

Bu, CSS3 ile yapabileceğiniz bir şey :) :) – BoltClock

cevap

152

h1:first-child seçici

kendi üst
ancak ve ancak bir h1 eleman ise birinci çocuğu seçin anlamına gelir. Burada konteyner :first-child

ul olan ve bu şekilde h1:first-child karşılayamamaktadır.

CSS3 en :first-of-type dava için vardır:

.detail_container h1.first 
{ 
    color: blue; 
} 
+1

Şimdi anlıyorum, ancak standardı oluşturduklarında her iki versiyonu da uygulamalıdırlar. –

+0

IE9 sürümünde çalışmıyor. Bu h1: geliştirici aracı – Cine

+7

[Uyumluluk listesi] 'nin (http://www.quirksmode.org/css/contents.html#t34) '' birinci-tür' seçicisinde bilinmeyen olduğunu söylüyor. –

8

:first-child kendi üst elemanın ilk çocuğu ancak ve ancak eğer ilk h1seçer. Örneğinizde, ul, div'un ilk çocuğudur.

Sözde sınıfın adı biraz yanıltıcıdır, ancak açıklamasında oldukça açık bir şekilde here açıklanmıştır.

jQuery'nin :first seçiciyi ne aradığınızı gösterir. Bunu yapabilirsiniz:

$('.detail_container h1:first').css("color", "blue");

+0

Peki, bunu nasıl yapacağım? –

+0

Sizin hakkınız yanıltıcıdır, daha önce bunu yapmak için jQuery kullanmış olduğum için çoğunlukla kafam karışmıştı. –

8
:

.detail_container h1:first-of-type 
{ 
    color: blue; 
} 

Ama tarayıcı uyumluluğu sıkıntılardan ve etajer ile, daha sonra o sınıfı hedefleyen bir sınıf birinci h1 vererek daha iyiyiz

Bu özel durum için şunları kullanabilirsiniz:

.detail_container > ul + h1{ 
    color: blue; 
} 

Ancak, birçok durumda aynı seçiciye ihtiyacınız varsa, BoltClock'un dediği gibi, bunun için bir sınıfa sahip olmanız gerekir.

+0

güzel iş! - Bu tarayıcıda nasıl kabul edilir? –

+0

Herhangi bir sorunla karşılaşmamalısınız. İşte ref http://www.w3.org/TR/CSS2/selector.html#child-selectors – Grekz

1

h1 etiketlerinizi başka bir div ürününe sardığınızda, birincisi first-child olacaktır. div'un stillere bile ihtiyacı yoktur. Bu çocukları ayırmanın bir yolu.

<div class="h1-holder"> 
    <h1>Title 1</h1> 
    <h1>Title 2</h1> 
</div> 
2

da başka h1 öğeyi seçebilir başka sayısına göre sayısını 1 değiştirerek

.detail_container h1:nth-of-type(1) 

kullanabilirsiniz.

İlgili konular