2012-02-09 39 views
9

Tôi đang cố gắng sử dụng display: table với fieldset, nhưng nó không mở rộng đúng cách. Điều tương tự cũng hiệu quả nếu tôi thay đổi <fieldset> thành <div>.Fieldset không hỗ trợ hiển thị: table/table-cell

Tôi đã thử với Safari và Firefox.

Tôi có thiếu gì đó không?

http://jsfiddle.net/r99H2/

+0

Dường như bạn đang làm việc hoàn toàn tốt với tôi, nhưng bạn có lẽ nên có một phần tử với 'display: table-row' bên trong fieldset và chứa các ô. –

+0

Nó hoạt động trong IE8/IE9, Opera. Nó không hoạt động trong cả Chrome canary hoặc Firefox hàng đêm. – thirtydot

Trả lời

14

Về cơ bản, hiển thị mặc định của fieldset thực sự không thể được thể hiện trong CSS. Kết quả là, các trình duyệt phải thực hiện nó theo các thuật ngữ không phải CSS, và điều đó cản trở việc áp dụng CSS cho phần tử.

Khá nhiều phần tử không thể tạo lại bằng CSS tinh khiết sẽ có vấn đề về loại đó.

+1

+1 Bây giờ điều này có ý nghĩa với tôi: http://stackoverflow.com/questions/6481944/why-do-fieldsets-clear-floats – BoltClock

4

Các fieldset là một yếu tố với hành vi đặc biệt, vì vậy nó có thể cho vấn đề này xảy ra.

Thêm một trình bao bọc div khác trong trình bao bọc fieldset của bạn và sử dụng div. Thay đổi fieldset trở lại bình thường, hoặc chặn.

<fieldset style="background: pink; width: 100%"> 
    <div style="display: table; width: 100%"> 
     <div style="display: table-cell; background: red; width: 33%">a</div> 
     <div style="display: table-cell; background: green; width: 33%">b</div> 
     <div style="display: table-cell; background: blue; width: 33%">c</div> 
    </div> 
</fieldset> 
+1

Điều đó có hiệu quả, nhưng có danh sách tài nguyên mà các yếu tố có hành vi đặc biệt đó không? – romaninsh

+0

Bạn sẽ phải tìm nó trong các thông số kỹ thuật HTML tương ứng, nhưng tôi không chắc chắn nếu có một danh sách tham khảo nhanh xung quanh. – BoltClock

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