2013-08-01 32 views
5

Tôi có một thiết lập html như thế này:Lựa chọn con trực tiếp và đầu tiên trong 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> 

tôi chỉ đơn giản muốn thêm 10px margin-top đến một trong những nhãn "nội dung để thay đổi". Đây là <p> là con trực tiếp của class="myClass" Tôi tin tưởng và đó là FIRST là <p>;

Tuy nhiên phong cách CSS này không hoạt động:

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

HOẶC

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

Bất cứ ai nhìn thấy lý do tại sao?

+4

Tôi nghĩ rằng con đầu tiên có nghĩa là con đầu tiên, không phải là con đầu tiên của một tên thẻ cụ thể. –

Trả lời

7

p không phải là con đầu tiên của .myClass. <div> là. Sử dụng:

.myClass p:first-of-type 

Bạn cũng có thể muốn sử dụng

.myClass > p:first-of-type 

để chọn con một cách rõ ràng.

+0

Cũng giống như thông tin bổ sung, ': first-of-type' là tất cả các trình duyệt phong nha tương thích và IE9 + - http://caniuse.com/#search=first-of-type Đối với IE cũ hơn, bạn có thể sử dụng bình luận có điều kiện và sử dụng jQuery cho cái đó. Css sẽ là '.myClass p: first-of-type, .myClass p.firstOfType' và jQ' $ ('. MyClass'). Find ('> p') .qq (0) .addClass ('firstOfType') ' – RaphaelDDL

+2

Chỉ số thứ hai,' .myClass> p: đầu tiên-of-type', thực hiện thủ thuật. Cái đầu tiên, '.myClass p: first-of-type', cũng chọn' p' bên trong 'div' bên trong. Cả hai đã chứng minh ở đây: http://jsfiddle.net/HDkBS/ – GolezTrol

+0

Xin chào! Tiền thưởng: Điều gì sẽ xảy ra nếu tôi muốn thử 'giây-loại -' - đó là một điều? Chỉnh sửa: Hoặc là những gì 'nth-of-type' là? – KickingLettuce

Các vấn đề liên quan