2009-10-28 42 views
12

CSS Câu hỏi: Nếu hai bộ chọn khác nhau áp dụng cho một phần tử, thì ai sẽ thắng?Ưu tiên giữa các bộ chọn CSS

Tôi biết điều này không nên xảy ra, nhưng tôi muốn tinh chỉnh ứng dụng cũ và CSS đang nhận được ở giữa.

+1

chính xác lặp lại http://stackoverflow.com/questions/514506/understanding-css-selectors –

Trả lời

38

gory details trong thông số kỹ thuật thực sự có thể đọc được một cách hợp lý. Tóm lại:

  1. !important quy tắc và nội quy style quy tắc giành chiến thắng nhiều nhất.

  2. Nếu không, thường thì chiến thắng cụ thể hơn. #id là một bộ chọn cụ thể hơn .classname là một bộ chọn cụ thể hơn so với tagname.

  3. Quy tắc cụ thể như nhau ở đâu, tuyên bố thắng cuối cùng.

Không có lý do cụ thể nào khiến ‘điều này không xảy ra’. Nó là bình thường để chỉ định một quy tắc bàn chải rộng và sau đó thêm một quy tắc cụ thể hơn để nhắm mục tiêu một trường hợp; nhiều quy tắc cùng thuộc tính trên một phần tử không phải là bất thường hoặc không mong muốn.

+1

biểu định kiểu của người dùng/tác giả cũng cần phải được xem xét: 'Theo mặc định, các quy tắc trong biểu định kiểu của tác giả ghi đè lên các biểu định kiểu đó trong biểu định kiểu của người dùng. Cả hai tác giả và phong cách người dùng tờ có thể chứa "! Quan trọng" tờ khai, và người dùng "! Quan trọng" quy tắc ghi đè tác giả "! Quan trọng" rules.' –

2

Xem phần specificity order của đặc điểm kỹ thuật (cùng với phần còn lại của chương đó! Các quy tắc quan trọng và thứ tự các quy tắc xuất hiện trong biểu định kiểu cũng có tác động).

5

Điều đó sẽ xảy ra! Đó là lý do tại sao nó được gọi là phong cách CASCADING tờ. Bạn có thể tìm thấy ví dụ về các ưu tiên here

0

Ưu tiên giữa các bộ chọn được kiểm soát theo mức độ cụ thể của chúng. Các bộ chọn cụ thể hơn giành được ít chi tiết hơn.

Nếu hai bộ chọn giống nhau, phiên bản sau sẽ thắng trên bộ chọn đầu tiên.

Có ba mức độ đặc trưng, ​​id, lớp và phần tử. Vì vậy, #elem giành được trên .elem làm id cụ thể hơn. .elem .cont thắng hơn .elem vì nó có nhiều bộ chọn hơn ở cùng cấp.

Đọc thêm trong phần "Điều gì xảy ra khi xung đột xảy ra?" tại số Selectutorial.

0

CSS là viết tắt của Cascading Style Sheets. Điều này có nghĩa là các quy tắc áp dụng cho các phần tử theo cách xếp tầng. Hoàn toàn bình thường khi các bộ chọn khác nhau áp dụng cho một phần tử. Nghĩ, ví dụ, như sau:

<div class="wrapper"> 
    <div id="foo" class="bar" style="some rules">Test</div> 
</div> 

Các quy tắc sau đây sẽ ảnh hưởng đến các yếu tố "foo":

.wrapper { 
    //some other rules 
} 

#foo { 
    // some more rules 
} 

.bar { 
    // some more rules 
} 

Quy tắc ưu tiên có thể được tìm thấy here.

Tôi luôn khuyên bạn nên sử dụng plugin Firefox "firebug". Nó sẽ cho bạn thấy chính xác các thuộc tính nào được đánh giá cho một phần tử cụ thể và tại sao, nhấn mạnh các ghi đè trong quá trình xếp tầng.

4

bạn phải tìm # no id = A, # không có các class = B và # no của thẻ = c trong bộ chọn

ABC với chiến thắng giá trị cao hơn.

.wrapper .title p { 
    //some other rules 
} 

A=0 B=2 C=1 =021 

\#foo { 
    // some more rules 
} 

A=1 = 100 

.bar .head div li{ 
    // some more rules 
} 


A=0 B=2 C=2 =022 

100> 022> 021

nên #foo thắng

+0

! Quan trọng tương đương với thêm 1000, btw. :) – poitroae

0
  1. ! Important
  2. inline style
  3. #ID
  4. lớp
  5. thẻ
+0

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ một tác giả, để lại nhận xét bên dưới bài viết của họ - bạn luôn có thể nhận xét về bài viết của riêng bạn, và một khi bạn có đủ [uy tín] (http://stackoverflow.com/help/whats-reputation), bạn sẽ có thể [nhận xét về bài đăng bất kỳ] (http://stackoverflow.com/help/privileges/comment). - [Từ đánh giá] (/ đánh giá/bài đăng chất lượng thấp/11251760) –

+1

@sebastianbrosch Làm cách nào để không cung cấp câu trả lời? Nó có thể hoàn toàn sai hoặc định dạng sai, [nhưng điều đó không có nghĩa là chúng ta nên lạm dụng hàng đợi đánh giá để xóa nó.] (Http://meta.stackoverflow.com/q/287563/1849664) – Undo

2

"#id" mạnh hơn tên ".class" và ".class" mạnh hơn tên "thẻ". Nhưng nếu chúng ta áp dụng "quan trọng" hơn ưu tiên của nó thì phần lớn là chúng.

  • ! Important
  • kiểu inline
  • id
  • lớp
  • thẻ
Các vấn đề liên quan