兩欄佈局和三欄佈局乾貨
一、兩欄佈局
1)浮動佈局:邊欄浮動,主欄留出相應的margin (邊欄寬度)
-
<div id = "aside">
-
</div>
-
<div id = "main">
-
</div>
-
div{
-
height:500px;
-
}
-
#aside{
-
width:300px;
-
background-color:yellow;
-
float:left;
-
}
-
#main{
-
background-color:aqua;
-
margin-left:300px;
-
}
2)浮動佈局+負外邊距(雙飛翼佈局的兩欄版)
-
<div id = "aside">
-
</div>
-
<div id = "main">
-
<div id = "content"></div>
-
</div>
-
div{
-
height:500px;
-
}
-
#aside{
-
width:300px;
-
background-color:yellow;
-
float:left;
-
margin-right:-100%;
-
}
-
#main{
-
width:100%;
-
float:left;
-
}
-
#content{
-
margin-left:300px;
-
background-color:aqua;
-
}
左側固定欄指定一個右側的100%的負外邊距,為整個螢幕的寬度
使得main的最左側可以與螢幕的最左側對齊
此時的main的寬度為100%,因此需要為其子內容centent指定一個左側的外邊距,用於空出左側欄的位置
3)絕對定位:左側欄寬度固定並絕對定位在最左側,右側主欄設定一個margin-left為邊欄的寬度
-
<div id = "aside">
-
</div>
-
<div id = "main">
-
</div>
-
#aside{
-
position:absolute;
-
left:0;
-
width:200px;
-
}
-
#main{
-
margin-left:200px;
-
}
4)flex佈局(經典的固定-自適應佈局)
-
<div id="container">
-
<div id = "aside"></div>
-
<div id = "main"></div>
-
</div>
-
#container{
-
display:flex;
-
}
-
#aside{
-
flex:0 0 200px;
-
}
-
#main{
-
flex: 1 1;
-
}
二、三欄佈局
1)絕對定位:左右側欄分別用絕對定位固定在左側和右側,中間欄用margin-left和margin-right空出左右位置
-
<div id = "left">
-
</div>
-
<div id = "main">
-
</div>
-
<div id = "right">
-
</div>
-
html,body{
-
margin:0;
-
padding:0;
-
height:100%;
-
}
-
div{
-
height:100%;
-
}
-
#left{
-
width:200px;
-
background-color:yellow;
-
position:absolute;
-
top:0;
-
left:0;
-
}
-
#main{
-
background-color:aqua;
-
margin-left:200px;
-
margin-right:300px;
-
}
-
#right{
-
width:300px;
-
background-color:orange;
-
position:absolute;
-
top:0;
-
right:0;
-
}
2)浮動定位法
另左側欄和右側欄向左和向右浮動,中間欄放在最後
再利用左右邊距margin空出左右位置
3)浮動佈局+負外邊距佈局(雙飛翼佈局)
- 三欄都採用左浮動
- 中間欄div寫在最前面,寬度為100%
- 為左側欄設定margin-left:-100%,也就是整個螢幕的100%,左側欄就跑到中間欄的最左側
- 右側欄也是左浮動,利用margin-left:-300px;(右側欄的寬度),使其到主欄的最右邊
-
<!--中間欄寫在最前面-->
-
<div id = "main">
-
<div id="content"></div>
-
</div>
-
<div id = "left">
-
</div>
-
<div id = "right">
-
</div>
-
html,body{
-
margin:0;
-
padding:0;
-
height:100%;
-
}
-
div{
-
height:100%;
-
}
-
#main{
-
background-color:aqua;
-
width:100%;
-
float:left;
-
}
-
#left{
-
width:200px;
-
background-color:yellow;
-
float:left;
-
margin-left:-100%;
-
}
-
#right{
-
width:300px;
-
background-color:orange;
-
float:left;
-
margin-left:-300px;
-
}
-
#content{
-
margin-left:200px;
-
margin-right:300px;
-
}
這裡面的main其實是佔據了整個螢幕的寬度,而centent設定了margin,所以內容不會被遮擋
4)聖盃佈局
前面與雙飛翼佈局類似,先渲染中間彈性區,再通過給左右盒子設定負邊距實現同一行的顯示“固定-自適應-固定”佈局
聖盃佈局沒有中間centent(相比於雙飛翼)所以兩邊的盒子會覆蓋掉中間的內容
So,Next,利用父級元素設定左右內邊距padding-left和padding-right,把三個盒子往中間擠,邊上留出盒子寬度的空白
再給左右兩個盒子加一個定位
-
.left{ position: relative; left: -200px;}
-
.right{position: relative;right: -200px;}
聖盃佈局和雙飛翼佈局的不同之處就在於,中間內容不被遮擋,的實現方式
一個是通過增加一個div,content
一個是通過給主元素設定內邊距padding