2013-08-01 10 views
5

Mam Ustawienia HTML tak:Wybór bezpośredni i pierwsze dziecko w CSS

<div class = "myClass"> 

    <div> 
     <a>Content</a> 
     <p><a>Content</a></p> 
    </div> 


    <p><a>Content to CHANGE!</a></p> 
    <p>Content</p> 

</div> 

ja po prostu chcesz dodać 10px margin-top do jednego oznaczonego „Content zmienić”. Ten <p> jest bezpośrednim potomkiem class="myClass", które uważam i jest to PIERWSZY, który jest <p>;

jednak ten styl CSS nie działa:

.myClass p:nth-child(1) { 
    margin-top: 10px; 
} 

LUB

.myClass > p:nth-child(1) { 
    margin-top: 10px; 
} 

Każdy, dlaczego?

+4

Myślę, że pierwsze dziecko oznacza pierwsze dziecko, a nie pierwsze dziecko o określonej nazwie tagu. –

Odpowiedz

7

Ponieważ p nie jest pierwszym dzieckiem z .myClass. <div> jest. Zastosowanie:

.myClass p:first-of-type 

Można również użyć

.myClass > p:first-of-type 

wybrać dziecku wyraźnie.

+0

Podobnie jak dodatkowe informacje, ': first-of-type' jest przyzwoitą przeglądarką kompatybilną i IE9 + - http://caniuse.com/#search=first-of-typ Dla starszych IE możesz użyć warunkowego komentarza i użyć jQuery dla że. Css będzie ".myClass p: first-of-type, .myClass p.firstOfType' i jQ' $ ('. MyClass'). Find ('> p'). Eq (0) .addClass ("firstOfType") ' – RaphaelDDL

+2

Tylko druga,' .myClass> p: first-of-type', robi lewę. Pierwsza, '.myClass p: first-of-type', również wybiera' p' wewnątrz wewnętrznego 'div'. Obie demonstrowane tutaj: http://jsfiddle.net/HDkBS/ – GolezTrol

+0

Hej, dzięki! Bonus: Co jeśli chciałbym spróbować "drugiego typu" - czy to coś? Edycja: Czy jest to czym jest 'n-ty-typu'? – KickingLettuce

Powiązane problemy