2012-01-12 39 views
5

Tôi có Html chứa một cái gì đó như: (Nhiều div trong div A).Css sẽ không ghi đè các giá trị kế thừa

<div class="a"> 
    <div class="b"></div> 
</div> 

css của tôi trông như thế:

.a div { 
    border: solid; 
    border-width: thin; 
} 

.b { 
    border: none; 
    border-width: 0px; 
    border-collapse: collapse; 
} 

Đối với giá trị một số lý do của b sẽ không ghi đè lên một. Tuy nhiên, , nếu tôi chỉ viết chứ không phải là "a .div" tôi sẽ không nhận được hành vi mong đợi cho các div khác bên trong a.

Cách duy nhất tôi làm việc này là sử dụng "quan trọng!" (nghĩa là "border: none! important";) nhưng điều đó có vẻ kém thanh lịch hơn.

sẽ thích bất kỳ ý tưởng nào về những gì đang diễn ra ở đó ..

Ehud.

Trả lời

1

.a div có độ đặc hiệu cao hơn .b.
Nếu bạn muốn css cho .b để ghi đè lên .a, hãy cung cấp cho nó độ đặc hiệu cao hơn, ví dụ: .a div.b.

(Hoặc bạn có thể sử dụng !important, vâng, nhưng điều đó không được khuyến khích ở đây.)

+0

Đó là phần không trực quan, ít nhất là đối với tôi, nhưng hoạt động như một nét duyên dáng (BTW tôi chỉ được sử dụng ". B div" và đó cũng làm việc quá). – EhudFisher

+0

Thật lạ lùng, '.b div' không được phép làm việc, vì bạn không có div bên trong .b, ít nhất là không có trong ví dụ của bạn. Dù sao, tính đặc hiệu là một khái niệm rất quan trọng trong CSS, tôi khuyên bạn nên đọc nó. –

3

Bộ chọn của bạn sai.

Thay vì

a. div { 

Viết

div.a { 

(chọn bất kỳ div với một lớp học của "a")

Thay vì

b { 

(mà sẽ thực sự cố gắng tạo kiểu cho tất cả b yếu tố)

Sử dụng

.b { 

(mà nói chọn bất cứ điều gì được xác định bởi các lớp của "b")

EDIT (để đáp ứng với phản ứng)

Để chọn tất cả các div nằm trong div với lớp "a", hãy sử dụng công cụ chọn sau: -

div.a div 
+0

selectors của tôi (trong code) là tốt, nhưng những gì tôi đặt trong câu hỏi rõ ràng là nhầm lẫn. Bộ chọn của tôi là ".b" và ".a div". Rất tiếc, tôi sẽ chỉnh sửa bài đăng gốc. Giải pháp, tuy nhiên, không làm việc cho tôi. Những gì cố gắng chọn không phải tất cả các div với một lớp a, nhưng tất cả các div trong phần tử có lớp là a. – EhudFisher

+0

Đã chỉnh sửa với bộ chọn mới cho bạn, thưa bạn. –

0

đặc điểm được tính bằng các trình biên dịch CSS, số điểm cao nhất trong tuyên bố được để thay đổi nội dung.

Điểm chung được tính bằng lệnh này:

inline id-element class-element no.-of-elements 
    $   $    $    $ 

($) -> 1 nếu loại tương ứng của đặc hiệu tồn tại trong mã
($) -> 0 nếu loại tương ứng của đặc doesn 't tồn tại trong mã

vì vậy, đây
cho .a div điểm sẽ là 0012
cho .b điểm sẽ là 0011
một rõ ràng đầu tiên thắng vì vậy nó được sửa đổi nội dung mặc dù .b cố gắng để ghi đè .a div

(OR)

bạn thể sử dụng !important trong việc kê khai để hoàn thiện mà khai

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