§ ITPOW >> 文档 >> CSS

CSS 布局设计:三列浮动中间列宽度自适应

作者: 来源: 日期:2011-3-9

使用浮动定位方式,从一列到多列的固定宽度及自适应,基本上可以简单完成,包括三列的固定宽度。而在这里给我们提出了一个新的要求,希望有一个三列式布局,其中左栏要求固定宽度,并居左显示,右栏要求固定宽度并居右显示,而中间栏需要在左栏和右栏的中间,根据左右栏的间距变化自动适应。

这给布局提出了一个新的要求,而且单纯使用 float 属性与百分比属性并不能够实现,CSS 目前还不支持百分比的计算精确到考虑左栏和右栏的占位,如果对中间栏使用 100% 宽度的话,它将使用浏览器窗口的宽度,而非左栏与右栏的中间间距,因此我们需要重新的思路来考虑这个问题。

绝对定位

在开始这样的三列布局之前,有必要了解一个新的定位方式——绝对定位。前面的浮动定位方式主要由浏览器根据对象的内容自动进行浮动方向的调整,但是这种方式不能满足定位需求时,就需要新的方法来实现,CSS 提供的除去浮动定位之外的另一种定位方式就是绝对定位,绝对定位使用 position 属性来实现。

position 用于设置对象的定位方式,可用值:static/absolute/relative。

对页面中的每一个对象而言,默认 position 属性都是 static。如果将对象设置为 position:absolute,对象将脱离文档流,根据整个页面的位置进行重新定位。当使用此属性时,可以使用 top,right,bottom,left 即上右下左四个方向的距离值,以确定对象的具体位置,看如下 CSS:

如果 #layout 使用了 position:absolute; 将会变成绝对定位模式,与此同时,当设置 top:20px; 时它将永远离浏览器窗口的上方 20px,而 left:0px; 将保证它离浏览器左边距为 0px。。

注意:一个对象如果设置了 position:absolute; 它将从本质上与其他对象分离出来,它的定位模式不会影响其它对象,也不会被其它对象的浮动定位所影响,从某种意义上说,使用了绝对定位之后,对象就像一个图层一样浮在了网页之上。

绝对定位之后的对象,不会再考虑它与页面中的浮动关系,只需要设置对象的 top, right, bottom, left 四个方向的值即可。

而在本例中,使用绝对定位则能够很好地解决我们所提出的问题。同样,使用 3 个 div 形成我们的三个分栏结构:

这样,左栏将距左边 left:0px; 贴着左边缘进行显示,而右栏则将由 right: 0px; 使得右栏距右显示,而中间的 #center 将使用普通的 CSS 样式:

对于 #center,我们不需要再设定其浮动方式,只需要让它有左边外边距永远保持 #lef 与 #right 的宽度,便实现了两边各让出 202px 的自适应宽度,而左右两边让的距离,刚好让 #left 和 #right 显示在这个空间中,从而实现了而已要求。

(总结:外层 position:relative;限宽的列使用 position:absolute;自适应宽度的列使用 margin。ITPOW编辑注)

本文转载于 http://www.tzwhx.com/newOperate/Html/2/21/213/18736.html

相关文章