2012-02-29 27 views
8

Xem ví dụ này: http://jsfiddle.net/vrgT3/5/min-height/min-width không tôn trọng hộp kích thước trong một số trình duyệt

tôi đã thực hiện một div 250x250px mẹ với overflow: auto; để thanh cuộn xuất hiện khi nội dung tràn hộp. Tôi đã thiết lập một nền màu xanh để làm cho nó rõ ràng khi phụ huynh có thể nhìn thấy.

Bên trong bố mẹ là div con với nền màu đỏ để hiển thị. Nó có 8px đường viền màu đen và box-sizing: border-box; do đó đệm và đường viền được bao gồm trong việc tính toán kích thước của hộp. Div con được đặt thành min-height: 100%min-width: 100%.

Kết quả mong đợi: div con phải có cùng kích thước giống như hình gốc, vì vậy không có màu xanh dương được hiển thị và không có thanh cuộn xuất hiện. Kích thước hộp được tính toán (nội dung + đệm + đường viền) phải là 250x250px. Phải có 8px viền đen inlaying này, để lại một khu vực màu đỏ 234x234px.

Hoạt động trên:

  • Midori 4.1 Ubuntu
  • Chromium 16 Ubuntu
  • Opera 11,61 Ubuntu

Các vấn đề với:

  • IE 8 WinXP: Thanh cuộn ngang và dọc xuất hiện. Nội dung là 249x266px có đường viền 8px cho kích thước hộp được tính là 265x282px.

  • Firefox 3.6 WinXP: Thanh cuộn dọc xuất hiện. Nội dung là 217x250px và kích thước hộp được tính là 233x266px.

  • Firefox 10 Ubuntu: Thanh cuộn dọc xuất hiện, nội dung là 221x250px, kích thước hộp được tính là 237x266px.

Tôi đã kiểm tra caniuse.com và dường như ít nhất là trình duyệt trong câu hỏi hỗ trợ cần thiết min-height, min-width, và box-sizing. Đưa cái gì?

Giải pháp: Như Marat đã đề xuất, đây thực sự là lỗi trình duyệt. Tôi đã giải quyết cách giải quyết khác bằng cách sử dụng JavaScript để thêm đệm/lề để sửa cho các chênh lệch trong offsetWidth/Height. Xem tại đây: http://jsfiddle.net/vrgT3/8/

+2

IE8 đã gặp sự cố lâu dài với chiều rộng/chiều cao và tối đa min/max; kích thước hộp không phù hợp. Đối với những người khác ... – BoltClock

+0

Cảm ơn phản ứng nhanh chóng! Tôi đã cố gắng loại bỏ thuộc tính 'overflow' (do đó rơi trở lại' overflow: visible') và tôi vẫn nhận được kích thước không chính xác trong cả IE và FF.Mục đích của 'box-sizing' là bao gồm các đường viền lớn trong' min- *: 100% '. Điều này hoạt động như mong đợi với Midori, Opera và Chromium. – kueblc

+0

Xem thêm http://css-tricks.com/box-sizing/ (phần "Tối thiểu/Tối đa" bên dưới phần "Hỗ trợ") –

Trả lời

8

Đây là lỗi không may của Firefox (xem bug 308801) và IE8 (IE9 hoạt động chính xác).

Lỗi được khắc phục trong Firefox 17+.

+0

Ah, vậy là xong. Nhưng nghiêm túc, chúng tôi đang ở Firefox 10 với lỗi gần 7 năm tuổi? Bất kỳ cách giải quyết nào đã biết? – kueblc

+4

Giải pháp thay thế là sử dụng trình bao bọc bổ sung. Và sau đó đặt 'border' và' padding' cho khối con không có 'min-height' và đặt' min-height' cho khối cha của khối con. –

+0

Nhân tiện, nếu lỗi này quan trọng đối với bạn, hãy cân nhắc bỏ phiếu để sửa lỗi trên trang lỗi. Càng nhiều phiếu bầu, lỗi càng có nhiều cơ hội được sửa chữa sớm. Ví dụ, đối với lỗi [401322] (https://bugzilla.mozilla.org/show_bug.cgi?id=401322), nó đủ để có 96 phiếu cho lỗi để có được ưu tiên cao cho nó, và nó đã được sửa khá nhanh (~ 3,5 tháng sau khi báo cáo). –

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