经典圣杯布局和关于如何居中元素
1.所谓圣杯布局,就是有三个块级元素div,竖向展开的。
圣杯布局它的目标是左右两栏定宽,中间那一行流式。
<div id="header"></div> <div id="container"> <div id="center" class="column"></div> <div id="left" class="column"></div> <div id="right" class="column"></div> </div> <div id="footer"></div>
文档流只能是后面的流向前面的,即文档流只能向左或向上流动,不能向下或向右移动。
在文档流中,元素的最终边界是由margin决定的,margin为负的时候就相当于元素的边界向里收,文档流认的只是这个边界,不会管你实际的尺寸是多少。
横向两列布局的两种实现方式: 1.两div均设置左浮动,使用margin设置两者间间距
2.一div设置左浮动,另一div设置右浮动
2.步骤:
(1)要设置标准的3列的布局模式,左边列(left column) 的宽度是200px,右边宽度的是150px ,中间的宽度是100%
#container{
padding-left: 200px; /*left column width*/
padding-right: 150px; /*right column width*/
overflow: hidden;
}
这样就能让container左边和右边空出200px,150px
(2)
本栗子中设置了left:180px;right:130px;
(3)margin-left的作用。
margin-left:-100%;作用是让#left的移动到#center左边,因为刚开始的时候,都设置了左浮动和使用相对定位。
#container .column{
position: relative; /*使用的是相对定位 */
float: left; /* 后面的三个div,它们被包裹在一个定宽的大div中,且它们都是左浮动(float:left),且它们都是定宽, */
}
margin-left:-它的宽度;则会移动到#center的右边
(4)对于#right,通过margin-right: -240px;移动到右边
效果图:
代码:
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> body{ min-width: 988px; /* 最后一步,可用性的修改。由于中间center层是流式的,当窗口大小缩小到X+Y的时候,center就没有了,所以应该给#container设置一个最小宽度 */ } #head{ text-align: center; } #container{ padding-left: 200px; /*left column width*/ padding-right: 150px; /*right column width*/ overflow: hidden; /* border:1px solid #333; */ } #container .column{ position: relative; float: left; /* 后面的三个div,它们被包裹在一个定宽的大div中,且它们都是左浮动(float:left),且它们都是定宽, */ } #center{ background:#eee; padding: 10px 20px; /* center这个单词的位置 */ margin: 0 15px; /* 让center左右外边距为15px */ width: 100%; /* width:100%来使控件宽度为父控件的内容宽度 */ min-height: 300px; overflow:visible; } #left{ width:180px; background:green; margin-left:-100%; /* 浮动到上边 */ right: 270px; /*180+60(padding total)+ 30(margin)到左边*/ padding:0 10px; /* LC fullwidth + CC padding */ min-height: 300px; } #right{ width: 130px; background:yellow; padding: 0 10px; margin-right: -240px; /*fullwidth + center column padding 尽量大一点,chrome浏览器下,这个div浮动不上来*/ min-height: 300px; } #footer{ clear: both; text-align: center; } /*IE6 fix 修改IE6以下的bug了,margin负值在IE6上会失效把left层弄到很远的地方,需要把它拉回来*/ * html #left { left:100px; } </style> </head> <body> <div id="head"> <h1>head</h1> </div> <div id="container"> <div id="center" class="column"> center </div> <div id="left" class="column"> left </div> <div id="right" class="column"> right </div> </div> <div id="footer"> <h1>footer</h1> </div> </body> </html>
3.关于如何居中元素
(1)如何居中div
//给div一个宽度,然后添加margin:0 auto这样的属性 .div{ width:200px; margin:0 auto; }
(2)如何居中一个浮动元素
.div{ width:500px; height:300px;/*高度可以不设*/ margin:-150px 0 0 -250px; /*上为height:300px的一半,右为width:500px的一半*/ position:relative; background-color:pink;/*为了便于观察效果*/ left:50%; top:50%; }