将它们包裹在一个含有背景颜色的容器div中,然后在“列”之后加入一个清除div。
<div style="background-color: yellow;">
<div style="float: left;width: 65%;">column a</div>
<div style="float: right;width: 35%;">column b</div>
<div style="clear: both;"></div>
</div>
更新以解决一些评论和我的想法:
这种方法之所以有效,是因为它本质上是对您的问题进行简化。在这种“老派”的方法中,我放置了两个列,然后是一个空的清除元素,清除元素的作用是告诉父元素(具有背景)这是浮动行为结束的位置,这允许父元素在清除位置实际呈现零像素高度,这将是先前最高的浮动元素。
这样做的原因是确保父元素的高度与最高的列相同,然后在父元素上设置背景,以使两个列具有相同的高度外观。
值得注意的是,这种技术是“老派”的,因为更好的选择是使用类似于clearfix这样的东西触发此高度计算行为,或者只需在父元素上设置overflow:hidden。
虽然这在这种有限的场景中可以使用,但如果您希望每个列看起来不同,或者它们之间有间隙,则在父元素上设置背景将无效,但是有一种技巧可以实现这种效果。
技巧是向所有列添加底部填充,最大的大小是您预计最短和最高列之间可能存在的差异,如果您无法计算出这个值,请选择一个较大的数字,然后需要添加相同数量的负底部边距。
您需要在父对象上设置overflow hidden,但结果将是每个列都将请求呈现由边距建议的额外高度,但实际上不会请求该大小的布局(因为负边距抵消了计算)。
这将使父元素呈现为最高的列的大小,同时允许所有列以其高度+所使用的底部填充的大小呈现,如果此高度大于父元素,则其余部分将简单地被修剪掉。
<div style="overflow: hidden;">
<div style="background: blue;float: left;width: 65%;padding-bottom: 500px;margin-bottom: -500px;">column a<br />column a</div>
<div style="background: red;float: right;width: 35%;padding-bottom: 500px;margin-bottom: -500px;">column b</div>
</div>
您可以在
Bowers & Wilkins网站上看到此技术的示例(请查看页面底部的四个水平聚光灯图像)。