2009-10-14 49 views
7

这是test file当内容包装成多行时,浮动的宽度不再缩小以适合

调整窗口的宽度足以容纳所有四个框。正如预期的那样,注意容器并不比盒子宽。

将窗口大小调整为足够小,以使这些框位于多行上。注意容器是页面的整个宽度(这是无意的)。

为什么?是否有可能以不依赖于盒子大小的方式来防止这种情况?

(看使用Firefox 3.5和Chrome 4.0.221.8。如果解决方案不工作在IE6,这很好。)

+0

也许您可以重新发布“测试文件”。目前这个问题在没有它的情况下变得毫无用处。 – Kev 2012-07-11 23:25:17

+0

@Kev对不起,修正了。 – 2012-07-13 10:13:00

+0

@Kev我看不出为什么这个问题关闭。测试文件已发布,现在正在工作,而且问题很有用。 – mahemoff 2012-09-19 23:40:40

回答

5

CSS 2.1节10.3.5浮动,非替换元素(http://www.w3.org/TR/CSS21/visudet.html#float-width)说, :

宽度= MIN(MAX(优选的最小宽度,可用宽度),优选的宽度)

  • 优选的最小宽度=的内框之一的宽度,因为他们都具有相同的尺寸。
  • 可用宽度=页面宽度减去边距/边框。
  • 首选宽度=所有内部盒子的宽度并排。

对于文字环绕的情况,这是完全理智的(想象一下,如果宽度的改变取决于行结束到可用空间边缘的距离)而不是你想要的。虽然我看不到避免这种情况的方法。

1

我遇到了这个问题,因为父div的max-wdith包装了一段文本。边界没有在右边缩小。

这里有一个JS的解决方案:

卸下一切的浮动,使照片联机,然后将背景的包装DIV,并添加一个jQuery的一行来解决:

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

下面的代码:

http://jsbin.com/odeya3

+0

而不是[do](http://stackoverflow.com/a/33511762/274502)* * * * *('#id container')。each(function(){$(this).parent()。width ($(this).width());});'保持每个项目都有其各自的子宽度。 – cregox 2015-11-04 00:39:52