将它们包装在一个包含 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>
更新以解决一些评论和我自己的想法:
这种方法之所以有效,是因为它本质上是对您的问题的简化,在这个有点“oldskool”的方法中,我将两列放在后面跟着一个空的清除元素,清除元素的工作是告诉父级(有背景)这是哪里浮动行为结束,这允许父级在清除位置基本上呈现 0 像素的高度,这将是任何最高的先前浮动元素。
这样做的原因是为了确保父元素与最高的列一样高,然后在父元素上设置背景以使两列具有相同的高度。
应该注意的是,这种技术是“oldskool”,因为更好的选择是使用clearfix之类的东西或简单地在父元素上设置 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 and wilkins 网站上看到这种技术的示例(参见页面底部的四个水平聚光灯图像)。