总括: 无论是三栏布局仍是两栏布局都是咱们在平时项目里常常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操做中也只会依赖那某一种方法,本文具体的介绍了三栏布局的四种方法,并介绍了它的使用场景。css
原文地址:CSS三栏布局的四种方法html
博主博客地址:Damonare的我的博客git
年华一去不复返,事业放弃再难成。github
所谓三栏布局就是指页面分为左中右三部分而后对中间一部分作自适应的一种布局方式。浏览器
HTML代码以下:布局
<div class="left">Left</div>
<div class="main">Main</div>
<div class="right">Right</div>复制代码
CSS代码以下:spa
//简单的进行CSS reset
body,html{
height:100%;
padding: 0px;
margin:0px;
}
//左右绝对定位
.left,.right{
position: absolute;
top:0px;
background: red;
height:100%;
}
.left{
left:0;
width:100px;
}
.right{
right:0px;
width:200px;
}
//中间使用margin空出左右元素所占据的空间
.main{
margin:0px 200px 0px 100px;
height:100%;
background: blue;
}复制代码
该方法有个明显的缺点,就是若是中间栏含有最小宽度限制,或是含有宽度的内部元素,当浏览器宽度小到必定程度,会发生层重叠的状况。code
HTML代码以下:htm
//注意元素次序
<div class="main">Main</div>
<div class="left">Left</div>
<div class="right">Right</div>复制代码
CSS代码以下:
//习惯性的CSS reset
body,html{
height:100%;
padding: 0;
margin: 0
}
//父元素body空出左右栏位
body {
padding-left: 100px;
padding-right: 200px;
}
//左边元素更改
.left {
background: red;
width: 100px;
float: left;
margin-left: -100%;
position: relative;
left: -100px;
height: 100%;
}
//中间部分
.main {
background: blue;
width: 100%;
height: 100%;
float: left;
}
//右边元素定义
.right {
background: red;
width: 200px;
height: 100%;
float: left;
margin-left: -200px;
position: relative;
right: -200px;
}复制代码
相关解释以下:
HTML代码以下:
<div class="main">
<div class="inner">
Main
</div>
</div>
<div class="left">Left</div>
<div class="right">Right</div>复制代码
CSS代码以下:
//CSS reset
body,html {
height:100%;
padding: 0;
margin: 0
}
body {
/*padding-left:100px;*/
/*padding-right:200px;*/
}
.left {
background: red;
width: 100px;
float: left;
margin-left: -100%;
height: 100%;
/*position: relative;*/
/*left:-100px;*/
}
.main {
background: blue;
width: 100%;
float: left;
height: 100%;
}
.right {
background: red;
width: 200px;
float: left;
margin-left: -200px;
height: 100%;
/*position:relative;*/
/*right:-200px;*/
}
//新增inner元素
.inner {
margin-left: 100px;
margin-right: 200px;
}复制代码
圣杯布局实际看起来是复杂的后期维护性也不是很高,在淘宝UED的探讨下,出来了一种新的布局方式就是双飞翼布局,代码如上。增长多一个div就能够不用相对布局了,只用到了浮动和负边距。和圣杯布局差别的地方已经被注释。
HTML代码以下:
//注意元素次序
<div class="left">Left</div>
<div class="right">Right</div>
<div class="main">Main</div>复制代码
CSS代码以下:
//CSS reset
body,html {
height:100%;
padding: 0;
margin: 0
}
//左栏左浮动
.left {
background: red;
width: 100px;
float: left;
height: 100%;
}
//中间自适应
.main {
background: blue;
height: 100%;
margin:0px 200px 0px 100px;
}
//右栏右浮动
.right {
background: red;
width: 200px;
float: right;
height: 100%;
}复制代码
这种方式代码足够简洁与高效,也容易理解
四种方法其实只有圣杯布局和双飞翼布局较难理解,但实际上理解了圣杯布局,双飞翼布局天然就理解了。