2009-10-14 21 views
7

Đây là test file.Chiều rộng của phao không còn co lại để vừa khi nội dung được quấn vào nhiều dòng

Thay đổi kích thước cửa sổ đủ rộng để chứa tất cả bốn hộp. Lưu ý rằng vùng chứa không rộng hơn các hộp, như dự định.

Thay đổi kích thước cửa sổ đủ nhỏ để các hộp nằm trên nhiều dòng. Lưu ý rằng vùng chứa có chiều rộng đầy đủ của trang (điều này là không mong muốn).

Tại sao? Có thể ngăn chặn điều này theo cách không phụ thuộc vào kích thước của các hộp không?

(Nhìn trên Firefox 3.5 và 4.0.221.8 Chrome. Nếu một giải pháp không làm việc trong IE6, đó là tốt.)

+0

Có thể bạn có thể đăng lại "tệp thử nghiệm" một lần nữa. Tại thời điểm này câu hỏi này được trả lại khá vô ích mà không có nó. – Kev

+0

@Kev Xin lỗi, đã sửa. –

+0

@Kev Tôi không thể thấy tại sao câu hỏi này bị đóng. Tệp thử nghiệm đã được đăng, hiện đang hoạt động và câu hỏi này rất hữu ích. – mahemoff

Trả lời

5

CSS 2.1 phần 10.3.5 nổi, yếu tố phi thay thế (http://www.w3.org/TR/CSS21/visudet.html#float-width) nói rằng :

width = min (max (ưu tiên chiều rộng tối thiểu, chiều rộng có sẵn), chiều rộng ưa thích)

  • chiều rộng tối thiểu ưa thích = chiều rộng của một trong các hộp bên trong, vì chúng ta đều cùng kích thước.
  • chiều rộng có sẵn = chiều rộng của trang trừ lề/đường viền.
  • chiều rộng ưa thích = chiều rộng của tất cả các hộp bên cạnh nhau.

Điều này hoàn toàn lành mạnh đối với trường hợp gói văn bản (hãy tưởng tượng nếu chiều rộng thay đổi tùy thuộc vào cách đóng đường đến cạnh của không gian có sẵn) nhưng không phải thứ bạn muốn ở đây. Tôi không thể nhìn thấy một cách để tránh điều này, mặc dù.

1

Tôi đã gặp phải sự cố này với một khoảng văn bản được gói bởi vì giá trị tối đa của một div cha mẹ. Đường biên không co lại ở bên phải.

Dưới đây là một giải pháp JS:

Tháo phao trên tất cả mọi thứ và làm cho các bức ảnh nội tuyến, sau đó di chuyển phía sau để một div wrapper và thêm một jquery one-liner để sửa chữa:

<script>$('#galleryWrapper').width($('.gallery').width());</script>

Dưới đây là các mã:

http://jsbin.com/odeya3

+0

thay vì [do] (http://stackoverflow.com/a/33511762/274502) một cái gì đó * như * '$ ('# id container'). Each (function() {$ (this) .parent(). Width ($ (this) .width());}); 'giữ mọi mục đơn với chiều rộng con tương ứng của chúng. – cregox

1

Bạn có thể sử dụng các truy vấn phương tiện truyền thông cho việc này. Xem http://css-tricks.com/css-media-queries/

+0

Tôi không thể xem các truy vấn phương tiện trợ giúp như thế nào ở đây, vì câu hỏi không phải là về xử lý các chiều rộng trình duyệt khác nhau. – mahemoff

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