2010-01-27 27 views
8

Có cách nào để kết hợp hai hoặc nhiều bộ chọn CSS sử dụng điều kiện boolean - and, or, not?Kết hợp hai hoặc nhiều bộ chọn CSS với điều kiện boolean

Xem xét việc này <div>:

<div class="message error"> 
    You have being logged out due too much activity. 
</div> 

Tôi có thể chỉ chọn những nhân tố này chứa cả các lớp ví dụ?

Điều gì đó dọc theo các dòng div.message && div.error?

+0

Bạn muốn thực hiện lựa chọn ở đâu? Trong Javascript (sử dụng một lib?) Hoặc trong một bản định kiểu hoặc ngôn ngữ khác? – beggs

+0

các công cụ chọn này sẽ được đưa vào biểu định kiểu. – Anurag

+1

Câu hỏi đã được trả lời đúng, nhưng lưu ý rằng bộ chọn lớp kép không hoạt động trong IE6 bạn thân của chúng tôi. – adamJLev

Trả lời

13

Những nên làm việc:

&& = div.message.error {} 
|| = div.message, div.error {} 

Đừng nghĩ rằng bạn có thể làm "chứ không phải"

Chỉnh sửa: Chỉ cần làm một thử nghiệm nhanh để xác nhận:

<html> 
    <head> 
     <style type="text/css"> 
      div.error.message { 
       background-color: red; 
      } 
      div.message, div.error { 
       border: 1px solid green; 
      } 
     </style> 
    </head> 
    <body> 
     <div>None</div> 
     <div class="error">Error</div> 
     <div class="message">Message</div> 
     <div class="error message">Error Message</div> 
    </body> 
</html> 

Các "thông báo" , "lỗi" và "thông báo lỗi" divs tất cả đều có đường viền màu lục và chỉ div "thông báo lỗi" có nền màu đỏ.

+1

hoàn hảo .. 'not' không phải là một lo lắng lớn, chỉ' và' và 'hoặc' là .. wow chúng tôi có một twister lưỡi ở đây :) .. cảm ơn rất nhiều cho các ví dụ chi tiết. – Anurag

+0

Giải pháp tuyệt vời. Chỉ cần tò mò, là giải pháp chính thức tài liệu bất cứ nơi nào như trong CSS spec, vv? Hữu ích để tham khảo. – David

5

Hãy thử div.message.error.

+2

... đó, tôi tin là trường hợp "và". Đối với "hoặc" bạn chỉ có thể lặp lại các dòng với mỗi lớp. – Jay

+0

không đời nào tôi có thể đoán được điều đó. cảm ơn rất nhiều! – Anurag

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