CSS网页布局入门教程8:三列浮动中间列宽度自适应
作者:不详 来源:aa25收集 【大 中 小】 浏览: 修改日期:2009-02-17 我要评论(104)
本站2010年9月新增《十天学会web标准(div+css)》系列教程,欢迎学习!
使用浮动定位方式,从一列到多列的固定宽度及自适应,基本上可以简单完成,包括三列的固定宽度。而在这里给我们提出了一个新的要求,希望有一个三列式布局,其中左栏要求固定宽度,并居左显示,右栏要求固定宽度并居右显示,而中间栏需要在左栏和右栏的中间,根据左右栏的间距变化自动适应。这给布局提出了一个新的要求,而且单纯使用float属性与百分比属性并不能够实现,CSS目前还不支持百分比的计算精确到考虑左栏和右栏的占位,如果对中间栏使用100%宽度的话,它将使用浏览器窗口的宽度,而非左栏与右栏的中间间距,因此我们需要重新的思路来考虑这个问题。
绝对定位
在开始这样的三列布局之前,有必要了解一个新的定位方式——绝对定位。前面的浮动定位方式主要由浏览器根据对象的内容自动进行浮动方向的调整,但是这种方式不能满足定位需求时,就需要新的方法来实现,CSS提供的除去浮动定位之外的另一种定位方式就是绝对定位,绝对定位使用position属性来实现。
position用于设置对象的定位方式可用值:static/absolute/relative
对页面中的每一个对象而言,默认position属性都是static。
如果将对象设置为position:absolute,对象将脱离文档流,根据整个页面的位置进行重新定位。当使用此属性时,可以使用top,right,bottom,left即上右下左四个方向的距离值,以确定对象的具体位置,看如下CSS:
#layout {
position:absolute;
top:20px;
left:0px;
}
如果#layout使用了position:absolute;将会变成绝对定位模式,与此同时,当设置top:20px;时它将永远离浏览器窗口的上方20px,而left:0px;将保证它离浏览器左边距为0px。。
注意:一个对象如果设置了position:absolute;它将从本质上与其他对象分离出来,它的定位模式不会影响其它对象,也不会被其它对象的浮动定位所影响,从某种意义上说,使用了绝对定位之后,对象就像一个图层一样浮在了网页之上。
绝对定位之后的对象,不会再考虑它与页面中的浮动关系,只需要设置对象的top,right,bottom,left四个方向的值即可。
而在本例中,使用绝对定位则能够很好地解决我们所提出的问题。同样,使用3个div形成我们的三个分栏结构:
#left {
background-color: #E8F5FE;
border: 1px solid #A9C9E2;
height: 400px;
width: 200px;
position: absolute;
top: 0px;
left: 0px;
}
#right {
background-color: #FFE7F4;
border: 1px solid #F9B3D5;
height: 400px;
width: 200px;
position: absolute;
top: 0px;
right: 0px;
}
这样,左栏将距左边left:0px;贴着左边缘进行显示,而右栏则将由right: 0px;使得右栏距右显示,而中间的#center将使用普通的CSS样式:
#center {
background-color: #F2FDDB;
border: 1px solid #A5CF3D;
height: 400px;
margin-right: 202px;
margin-left: 202px;
}
对于#center,我们不需要再设定其浮动方式,只需要让它有左边外边距永远保持#lef与#right的宽度,便实现了两边各让出202px的自适应宽度,而左右两边让的距离,刚好让#left和#right显示在这个空间中,从而实现了而已要求。
标准之路www.aa25.cn 提示:可以先修改部分代码后再运行
制作过程如下:
先设置body{ margin:0px;} 清除掉body默认的边界,这样不会影响到三列的显示;
接着创建div标签,css的边框、背景色、宽度、高度不再详述,可参考以前的教程,具体说一下本例中新接触的属性在css对话框中是怎么设置的:

<!--本文章来自WWW.AA25.CN-->
〖DIV+CSS教程〗Tags: div 局中 教程 三列
所属专题:入门教程
相关文章
更多评论(104)..会员评论
- weiwei(124.236.*.*) 发表于:2011-07-07 10:28:19
- 你好,请问为什么不能把body{margin:0px; }去掉,在#center { margin-top: 0px;margin-left: 0px;}加上这个啊?
- 管理员回复:不一样的
- dengjun0925(119.4.*.*) 发表于:2011-06-17 15:53:04
- body怎么设置?标签重定义又怎么做啊?
- 管理员回复:请看本站的十天学会div+css
- Etelon(113.74.*.*) 发表于:2011-05-29 16:06:38
- body怎么设置?
- 管理员回复:标签重定义
- Etelon(113.74.*.*) 发表于:2011-05-29 15:49:02
- 中间那个做不出来
- haolijun(1.85.*.*) 发表于:2011-04-25 21:39:37
- 学习了,怎么这么好的网站呢,真的真的不错,谢谢了 ,万分感谢
- 管理员回复:不客气,欢迎常来
- rss(111.76.*.*) 发表于:2011-01-16 20:20:11
- 改了高度 90% ,为什么中间的不是与左右同高 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>三列左右固定宽度中间自适应——AA25.CN</title> <style> body{ margin:0px; } #left { background-color: #E8F5FE; border: 1px solid #A9C9E2; height: 90%; width: 200px; position: absolute; top: 0px; left: 0px; } #center { background-color: #F2FDDB; border: 1px solid #A5CF3D; height: 90%; margin-right: 202px; margin-left: 202px; } #right { background-color: #FFE7F4; border: 1px solid #F9B3D5; height: 90%; width: 200px; position: absolute; top: 0px; right: 0px; } </style> </head> <body> <div id="left">左列</div> <div id="center">中列——AA25.CN</div> <div id="right">右列</div> <!--本文章来自WWW.AA25.CN--> </body> </html> 文章出处:标准之路(http://www.aa25.cn/div_css/268.shtml)
- weixiang0407(114.229.*.*) 发表于:2010-11-09 16:10:37
- #center中 高度设置为400 左右边距202 这个数这么得来的 麻烦解释下
- 管理员回复:左右两侧各200再加上2像素的边框
- weixiang0407(114.229.*.*) 发表于:2010-11-09 15:37:10
- margin-right: 202px; margin-left: 202px; 这两行什么意思? 左右填充边界像素?
- 管理员回复:是外边距
推荐文章
热门文章
最新评论文章
推荐专题
在线交流QQ群
- 106310407(开)
- 55427134(开)
- 2993401(开)
- 30235673(开)
- 33424604(开)
- 2993401(开)
- 161512108(开)
- 161510519(开)
- 158375021(开)
- 155858414(开)
- 143309878(开)
- 16373807(开)
- 129098721(开)
- 123473199(开)
- 146991009(开)
- 135792800(开)
