2009-11-04 66 views
11

Làm cách nào tôi có thể đặt nội dung thành tràn trong fieldset? Nó hoạt động trong IE nhưng không hoạt động trong FF.fieldset firefox tràn CSS fix

Chức năng tương tự tôi có thể đạt được với phần tử div trong cả hai trình duyệt.

mẫu:

<fieldset style="border:thin solid #990033;"> 
    <legend>test</legend> 
    <div style="background-color:#0033FF; height: 30px; width:800px;" >FIXED DIV</div> 
</fieldset> 
<p>&nbsp;</p> 
<div style="border:1px solid #999999; padding:0 8px 8px 8px;"> 
    <label style="background-color:#FFFFFF; padding:0 5px; position:relative; top:-10px;" >test</label> 
    <div style="background-color:#0033FF; height: 30px; width:800px;" >FIXED DIV</div> 
</div> 
+0

tôi dán này vào một tài liệu HTML và cả hộp trông giống hệt nhau trong Firefox (3.5). Trong internet explorer họ có đệm nội bộ khác nhau. Bí quyết tiện dụng cho CSS là bắt đầu mọi thứ không có đệm và không có lề: * {padding: 0; lề: 0} và chỉ áp dụng những cái bạn cần, mỗi trình duyệt có xu hướng đặt các phần đệm và lề mặc định khác nhau trên các phần tử. – MalphasWats

Trả lời

19

Tìm thấy giải pháp, thêm phong cách css có điều kiện:

fieldset { 
    display: table-column; 
} 
<!–[if IE]> 
fieldset { 
    display: block; 
} 
<![endif]–> 
+0

Hoàn hảo! Cảm ơn bạn! Lưu ý rằng bạn không thể nổi các fieldset. Tôi đã thực hiện một fiddle giới thiệu với sự hỗ trợ của Opera: http://jsfiddle.net/dsHUW/5/ – falsarella

+1

Cảm ơn! Chỉ cần xác nhận: lỗi này vẫn tồn tại trong FF 20.0.1 và cũng tồn tại trong Safari 5.1.2. Hoạt động tốt trong Chrome và IE 7-10. 'display: table-column;' đã sửa nó cho Firefox, nhưng không phải là Safari. IE sẽ không trả về fieldset ở tất cả (phải sử dụng 'display: block', mặc định, thay vào đó). Chrome dường như không quan tâm cho dù đó là 'block' hay' table-column', cũng làm cho nó trở nên tốt đẹp. [Xem fiddle] (http://jsfiddle.net/VVjnr/) (Tất cả các kiểm tra được thực hiện trong Windows 7 SP1) – nothingisnecessary

+0

'display: table-column;' không khắc phục sự cố trong Chrome 36 –

-1

bạn không cần phải làm tràn bộ nội dung! Trong IE (6), theo mặc định, thẻ "fieldset" không có đệm, trong FF nó có! Đó là lý do tại sao bạn có một hành vi khác!

Bạn có thể đặt lại vùng đệm (padding: 0px;) của fieldset nhưng trong trường hợp này, trong FF, nhãn trông không ổn! Để khắc phục điều đó, bạn có thể đặt lại padding-bottom của fieldset và áp dụng "margin-left: -12px" cho div bên trong fieldset. Tuy nhiên, điều đó giải quyết vấn đề với FF nhưng tạo ra một vấn đề trong IE!

Vì vậy, đề xuất của tôi là sử dụng các câu lệnh CSS có điều kiện để áp dụng cho từng trình duyệt đúng quy tắc của phong cách!

+0

Tôi đã thử nhưng không thành công. – jmav

17

Đây thực sự là một lỗi trong Firefox và nó tồn tại trong gần 8 năm. : D https://bugzilla.mozilla.org/show_bug.cgi?id=261037

+0

Lỗi này vẫn tồn tại FireFox 32 và Chrome 36. –

+0

Đây có phải là lỗi không? bất cứ điều gì, nó vẫn còn hiện diện trong FF v54.0.1 - Chỉ cần sử dụng sửa 'fieldset {display: table-column;}' và nó hoạt động hoàn hảo! – B4NZ41

+0

@ B4NZ41 Trong FF 52.5.3 ESR 'fieldset {display: table-column;}' không giải quyết vấn đề về độ rộng + tràn và không thể làm việc cho phần tử cố định/tuyệt đối (tự động chuyển thành display: block nhưng trông giống như hiển thị: bàn). Tôi đã thử nhưng không hoạt động. Tin xấu: Chrome đã "cải thiện" fieldset để hoạt động như trong firefox. Thật buồn. – 18C

3

Từ một blog post bởi Emil Björklund:

body:not(:-moz-handler-blocked) fieldset { 
    display: table-cell; 
} 
+2

1000X có, cảm ơn bạn vì điều này. Điều này nên được chấp nhận câu trả lời, một trong những khác không có bất kỳ trình duyệt khác ngoại trừ tức là vào tài khoản. – Bryan

+0

Không hoạt động với tôi trong Firefox và Chrome. – 18C

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