2013-05-07 42 views
7

Tôi đang cố gắng thiết kế biểu mẫu mà không cần sử dụng JavaScript hoặc JQuery. Nó bao gồm một loạt các hộp kiểm. Ý tưởng là để hiển thị một gif nhất định sau khi hộp kiểm nếu nó được bỏ chọn. Nếu không, sẽ không hiển thị gì sau nó. Đây là mã tôi có:tạo kiểu hộp kiểm mẫu css với các thẻ đã chọn và sau

input[type=checkbox]::after 
{ 
    content: url(images/unchecked_after.gif); 
    position:relative; 
    left:15px; 
    z-index:100; 
} 
input[type=checkbox]:checked::after 
{ 
    content:""; 
} 

Nó hoạt động trong Chrome nhưng dường như không hoạt động trong Firefox hoặc IE. Chuyện gì thế?

+3

'đầu vào' là phần tử có mô hình nội dung trống - và vì phần tử giả sau' :: sau' được hiển thị dưới dạng nút con của phần tử được áp dụng, có xung đột. Một số trình duyệt vẫn cho phép làm như vậy - một số thì không. Sử dụng bộ phối hợp anh chị em bên cạnh để định dạng một phần tử bạn đặt sau phần tử đầu vào. http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#adjacent-sibling-combinators – CBroe

+0

Cảm ơn, điều đó giải thích. Nhưng tôi vẫn không thể làm cho nó hoạt động được. Ví dụ: nếu tôi đặt thẻ "p" sau hộp kiểm, công cụ chọn CSS sau không hoạt động: đầu vào [type = checkbox]: checked + p: after – user1316401

Trả lời

5

Giải pháp trình duyệt chéo hoạt động cho tôi là bao gồm nhãn trống (có lớp "checkbox_label") sau khi nhập hộp kiểm và sau đó là kiểu IT thay vì hộp kiểm.

input[type=checkbox] + label:after 
{ 
    content: url(images/unchecked_after.gif); 
    position:relative; 
    left:0px; 
    top:1px; 
    z-index:100; 
} 

input[type=checkbox]:checked + label:after 
{ 
    content:""; 
} 

.checkbox_label 
{ 
    height:0px; 
    width:0px; 
    display:inline-block; 
    float:left; 
    position:relative; 
    left:20px; 
    z-index:100; 
} 
+0

hey cảm ơn cho câu trả lời bạn có thể cung cấp một số tài liệu tham khảo hoặc những gì là + nhà điều hành được gọi là ...? trong bối cảnh này .. –

+0

[element1 + element2 selector] (http://www.w3schools.com/cssref/sel_element_pluss.asp) chọn phần tử2 ngay sau phần tử1. – ZitRo

3

Rõ ràng, việc sử dụng các yếu tố giả ::before::after không được hỗ trợ bởi đặc điểm kỹ thuật. Câu hỏi của bạn được trả lời here. Hy vọng rằng sẽ giúp!

+0

Tôi đang thử nghiệm trong Firefox 20 và IE10, là lý do tại sao tôi nghĩ mình đã làm điều gì đó sai ... nhưng sao? – user1316401

+0

Tôi đang thử nó trên jsfiddle với firefox và có thể tái tạo lỗi của bạn. Hãy để tôi xem nếu tôi có thể tìm thấy một sửa chữa. – CoderOfHonor

+0

Tôi nghĩ rằng tôi đã tìm thấy vấn đề. Tôi đã chỉnh sửa nó vào câu trả lời của tôi. – CoderOfHonor