1、首先我们需要一个简单的html结构来完成我们的的实验
标准的3列的布局模式,左边列(left column) 的宽度是200px,右边宽度的是150px ,中间的宽度是100%
<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>
2、我们开始对页面进行布局
#container {
padding-left: 200px; /* LC width */
padding-right: 150px; /* RC width */
}
让container左边和右边空出200px,150px
#container .column {
float: left;
}
#center {
width: 100%;
}
#left {
width: 200px; /* LC width */
}
#right {
width: 150px; /* RC width */
}
#footer {
clear: both;
}
这里设置的center 的宽度为了100%不包括padding,让left div的宽度和我们上面在container流出的左边的padding一致。
#left {
width: 200px; /* LC width */
margin-left: -100%;
right: 200px; /* LC width */
}
#right {
width: 150px; /* RC width */
margin-right: -150px; /* RC width */
}
让左边的div移动到左上角。右边的div移动到右上角
3、修复ie6下的bug
* html #left {
left: 150px; /* RC width */
}
在ie6下,会出现看不到左边的div,
最后的效果
下面是全部的源代码:
<!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=utf-8" />
<title>css 布局</title>
<style type="text/css">
body{
min-width: 988px;
}
#head{
text-align: center;
}
#container{
padding-left: 200px; /*left column width*/
padding-right: 150px; /*right column width*/
overflow: hidden;
}
#container .column{
position: relative;
float: left;
}
#center{
background:#eee;
padding: 10px 20px;
margin: 0 15px;
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*/
* 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>
参考: http://www.alistapart.com/articles/holygrail
分享到:
相关推荐
圣杯布局代码分享
简易版圣杯布局,实现高度自适应,左右宽度固定,中间宽度也是自适应。
适合前端新手小白的布局方面小技巧,内容主要为利用元素定位和浮动方面的知识实现圣杯布局、双飞翼布局、黏连布局、伪等高布局等,解决浮动元素高度失效和相邻垂直外边距重叠问题,同时还解决ie6下fixed失效问题。
圣杯布局
css三角形、居中、圣杯布局
圣杯布局实现思路1
圣杯布局这是圣杯布局
前端常用两种布局方式:双飞翼布局以及圣杯布局
双飞翼布局和圣杯布局 网页开发中,经常会遇见左中右垂直三栏的布局方式,两侧结构宽度固定,中间自适应,有时候需要优先加载中间区域,那么便在DOM结构上便有所要求,需要中间区域在前,左右区域在后。 首先三...
圣杯布局和双飞翼布局 (典型的面试题:加载逻辑) 两者的功能相同,都是为了实现一个两侧宽度固定,中间宽度自适应的三栏布局,中间部分在DOM结构上优先,以便先行渲染。(核心目的:先解析中间栏,展示当前页面的...
说起网站布局,之前一个做PS设计的朋友说过“网站布局”不就和我做图片一样,把各种需要的组件一摆,然后设个宽高给个定位不就...而今天我们的主题,“双飞翼布局”与“圣杯布局”就是一个两边固定,中间宽度自适应,并
圣杯布局跟双飞翼布局的实现,目的都是左右两栏固定宽度,中间部分自适应。接下来通过本文教程给大家介绍CSS布局之圣杯布局与双飞翼布局,感兴趣的朋友一起学习吧
HTML代码描述如何在网页中制作简单的网页布局,代码简单,便于理解。
双飞翼布局和圣杯布局都是实现两边固定中间自适应的三栏布局的方式,最近在整理三栏布局实现方式的笔记,决定但拉出来一篇,记一下这两个经典布局。 1、圣杯布局 浮动、负边距、相对定位、不添加额外标签 效果图 ...
圣杯布局源自 Matthew Levine 在06年的一篇文章,其DOM结构如下: XML/HTML Code复制内容到剪贴板 <div u00a0class=main></div> <div u00a0class=sub></div> <div u00a0class=extra></div> 流程...