1>绝对定位的方法
左右绝对定位,中间使margin空出左右所占据的位置
缺点:当中间含有最小宽度或者含有宽度的内部元素,当浏览器缩小到一定程度会发生重叠
<div class="left"></div>
<div class="main"></div>
<div class="right"></div>
body{
margin:0;
padding:0;
}
body{
position:relative;
}
.left{
position:absolute;left:0;top:0;
width:200px;
height:400px;
background:red;
}
.right{
position:absolute;right:0;top:0;
width:300px;
height:400px;
background:red;
}
.main{
margin-left:200px;
margin-right:300px;
height:400px;
background:yellow;
}
2>圣杯布局
html中main在第一个
中间width设置为100%,全部浮动,左边margin-left:-100%,右边margin-left:-自己宽度,父级用padding留出左右的位置,因为遮住中间,position:relative到自己的位置
缺点:后期维护不高看起来复杂
<div class="main">124</div>
<div class="left"></div>
<div class="right"></div>
body{
margin:0;
padding:0;
}
body{
padding:0 300px 0 200px;
}
.main{
width:100%;
float:left;
height:400px;
background:yellow;
}
.left{
float:left;
width:200px;
position:relative;left:-200px;
height:400px;
background:red;
margin-left:-100%;
}
.right{
float:left;
width:300px;
position:relative;right:-300px;
height:400px;
background:blue;
margin-left:-300px;
}
3>双飞翼布局
根据圣杯布局改进的,在html中main里新增加一个div,html布局main第一
main的div的width设置为100%,全部浮动,左边margin-left:-100%,右边margin-left:-自己宽度,加的div的margin空出左右位置
<div class="main">
<div class="inner">1234</div>
</div>
<div class="left"></div>
<div class="right"></div>
body{
margin:0;
padding:0;
}
.inner{
margin:0 300px 0 200px;
}
.main{
width:100%;
float:left;
height:400px;
background:yellow;
}
.left{
float:left;
margin-left:-100%;
width:200px;
height:400px;
background:red;
}
.right{
float:left;
margin-left:-300px;
width:300px;
height:400px;
background:blue;
}
4>浮动的方法
html是left,right,main
左div左浮动,右div右浮动,中间自适应margin出左右的占位。
简洁高效
<div class="left">left</div>
<div class="right">right</div>
<div class="main">main</div>
body{
margin:0;
padding:0;
}
.left{
float:left;
width:200px;
height:400px;
background:red;
}
.right{
float:right;
width:300px;
height:400px;
background:blue;
}
.main{
margin:0 300px 0 200px;
height:400px;
background:yellow;
}
5>Flex
<div class="contain">
<div class="main"></div>
<div class="left"></div>
<div class="right"></div>
</div>
body{
margin:0;
padding:0;
}
.contain{
display:flex;
display:-webit-flex;
height:400px;
}
.main{
flex:1 1;
order:2;
background:yellow;
}
.left{
flex:0 0 200px;
order:1;
background:red;
}
.right{
flex:0 0 300px;
order:3;
background:blue;
}