2009-08-09 28 views
9

thể trùng lặp:
Is there a CSS parent selector?CSS Phụ Huynh/Tổ tiên Selector

Tôi biết đây là một shot trong bóng tối, nhưng là có một cách, chỉ sử dụng css, CSS2, không jquery , không có javascript, để chọn và tạo kiểu cho tổ tiên của một phần tử? Tôi đã đi qua các bộ chọn nhưng đang đăng bài này trong trường hợp tôi bị mất một cái gì đó hoặc có một workaround thông minh.

Ví dụ: giả sử tôi có bảng có tên "kiểm tra" được lồng trong một div. Có một số loại:

<div> 
    <table class="test"> 
    </table> 
</div> 
div (with child) .test 
{ 
    /*styling, for div, not .test ...*/ 
} 
+0

Có vấn đề gì khi thêm lớp vào div chứa? – rossipedia

Trả lời

9

Không có những điều như selector mẹ trong CSS2 hoặc CSS3. Và có thể không bao giờ có, thực sự, bởi vì toàn bộ phần "Cascading" của CSS sẽ không dễ dàng giải quyết một khi bạn bắt đầu thực hiện các bộ chọn cha mẹ.

Đó là những gì jQuery là cho :-)

+8

jQuery và JavaScript nói chung là để thêm chức năng giao diện người dùng; không chỉ định bất kỳ kiểu nào. jQuery và JavaScript được sử dụng cho phong cách do những thiếu sót của CSS, nhưng không có nghĩa là cho mục đích này. – Scharrels

+10

Trước hết, có một nụ cười sau câu đó. Thứ hai, tôi không đồng ý. Nó sẽ được tốt hơn để có thể xác định tất cả các khía cạnh trình bày thông qua CSS? Tất nhiên. Có thể không? JQuery là một công cụ tuyệt vời cho phép bạn làm phong phú thêm trải nghiệm của người dùng - và nếu điều đó bao gồm việc thiết lập một kiểu không thể thiết lập theo cách nhất quán, thì đó chính là điều tôi sẽ làm. – ChssPly76

+2

-1 cho jQuery nơi OP chỉ đơn giản là có thể nghỉ mát để vanilla JS. – PeeHaa

6

Trong CSS có một: chọn sản phẩm nào cho phép bạn để phù hợp với các yếu tố có sản phẩm nào, bạn có thể phủ nhận tác dụng với: không chọn.

div:not(:empty) { 
    // your styles here 
} 

Tuy nhiên, tôi không chắc liệu tất cả các trình duyệt có hỗ trợ điều này hay không.

2
div:not(:empty) { 
    margin:0; 
} 

không được công nhận bởi http://jigsaw.w3.org/css-validator/ như CSS2

đó là mục đích của CSS để "cascade" xuống từ chứa nhiều đến các yếu tố cụ thể hơn. Tôi đoán nó có thể để bạn có thể "đảo ngược logic của bạn", như trong

div.myclass { /* format parent */ } 
div.myclass * { /* neutralize formats in descendants */} 
div.myclass img { /* more specific formats for img children */ } 

may mắn Mike

+0

Điều đó không thể thay đổi định dạng phụ huynh tùy thuộc vào những gì mà người quản lý yêu cầu, đó là điều OP yêu cầu. – ChrisW

1

: pseudoclass trống được hỗ trợ bởi trình duyệt Firefox, nhưng không tương thích với trình duyệt IE.

Nhưng cách giải quyết jQuery rất đơn giản cho IE là http://www.webmasterworld.com/css/3944510.htm. Đã lưu thịt xông khói của tôi

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