CSS 多列布局问题简单解决方案多列布局问题简单解决方案
纯 CSS 打造多列等高并不像想象中那么容易。本文着重讲述多列布局出现的问题,之后提供一个在所有浏览器
都正常工作的简单解决方案。这个方法 100% 无 CSS hack,无图片,无 javascript,甚至可以用在最严格编码
的网站上。
多列等高的问题多列等高的问题
上例中有包含不同内容的 3 列,可以看出存在的问题是列的背景色随着其包含内容的高度而自适应展开。这是我们要解决的
问题。如何使所有的列等高?或具体的说,如何使所有列的高度等于最高列的高度?这很棘手,因为我们不清楚每列将会多
高,哪一列是最高的。不能简单的给所有列一个固定的高度,如果内容很少将会导致页面底部有大片空白;如果内容太多则会
在文字显示完全前关闭。两种情形都不妥。实际上,内容的长度是动态的,所以每列的高度也是动态的。必须意识到 Web 上
没有固定的东东,乡民们有不同的屏幕分辨率,浏览器中的文字也可能被设置为任意大小,所有这些都会影响内容的高度。
分离列内容与其背景色分离列内容与其背景色
解决等高问题的第一步是把能分离的破开。方法是每列用两个 div 替代原来的一个。第一个 div 用来放内容,另一个用来作背
景色。分离使我们可以单独控制这些额外的元素,之后用更有效的方法把它们放在一起。答案呼之欲出。
浮动的容器的高度始终取决于其浮动的内容(高度)浮动的容器的高度始终取决于其浮动的内容(高度)
这是本文多列等高方法的核心。 使一个 div 的高度等于最高列高度的唯一方法是这个 div 包含所有的列。换句话说,通过把所
有的列放在一个容器中,容器的高度就是最高列的高度。这是个非常有用的结构。
3列列 HTML div 结构结构
上例中 3 个内容列在一个 div 容器中。
<div id="container1">
<div id="col1">Column 1</div>
<div id="col2">Column 2</div>
<div id="col3">Column 3</div>
</div>
3 列列 CSS
下面是使 div 容器等高于最高列的 CSS。
#container1 {
float:left;
width:100%;
}
#col1 {
float:left;
width:30%;