2009-07-14 18 views

Trả lời

63

.classA.classB đề cập đến một yếu tố mà có cả hai lớp A và B (class="classA classB"); trong khi .classA .classB đề cập đến một phần tử có class="classB" được hạ xuống từ một phần tử có class="classA".

Edit: Spec để tham khảo: Attribute Selectors (Xem phần 5.8.3 Lớp Selectors)

+1

Đó là những gì tôi đã nghi ngờ. Bạn có biết nếu IE6 xử lý .classA .classB (có dấu cách) đúng không? –

+0

Chính xác! Điều này đúng trong Chrome, IE và Firefox. – David

+0

@retrohound Chỉ cần thử nó - IE6 xử lý cả hai trường hợp (với không gian và không có) một cách chính xác – jimyi

18

Một phong cách như thế này còn lâu mới phổ biến hơn, và sẽ nhắm mục tiêu bất kỳ loại thành phần của lớp "ClassB" được lồng vào bên trong bất kỳ loại phần tử của lớp "classA".

.classA .classB { 
    border: 1px solid; } 

Nó sẽ làm việc, ví dụ, vào lúc:

<div class="classA"> 
    <p class="classB">asdf</p> 
</div> 

một này, tuy nhiên, mục tiêu bất kỳ loại của nguyên tố đó là cả lớp "classA", cũng như lớp "ClassB". Kiểu kiểu này ít được nhìn thấy hơn, nhưng vẫn hữu ích trong một số trường hợp.

.classA.classB { 
    border: 1px solid; } 

này sẽ áp dụng cho ví dụ này:

<p class="classA classB">asdf</p> 

Tuy nhiên, nó sẽ không có hiệu lực thi hành sau:

<p class="classA">fail</p> 
<p class="classB">fail</p> 

(Lưu ý rằng khi một phần tử HTML có nhiều lớp học, chúng được phân cách bằng dấu cách.)

+1

Hiển thị trường hợp không thành công là hữu ích. – Hal50000

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