如果你有了那么一點理解以后,我們來看看圣杯布局的實現(xiàn):
注:reset部分的代碼大家自行添加
1、HTML結(jié)構(gòu):
<header>
<h4>Header內(nèi)容區(qū)</h4>
</header>
<div class="container">
<div class="middle">
<h4>中間彈性區(qū)</h4>
</div>
<div class="left">
<h4>左邊欄</h4>
</div>
<div class="right">
<h4>右邊欄</h4>
</div>
</div>
<footer>
<h4>Footer內(nèi)容區(qū)</h4>
</footer>
有人可能會有疑惑,為什么中間的主體部分要寫在最前面。因為中間盒子是要被優(yōu)先渲染嘛~并且設置其自適應,也就是width:100%%u3002
2、css樣式:
header{
width: 100%; height: 40px;
background-color: #8ecfd4;
}
.container{
overflow:hidden;
}
.middle{
width: 100%;
background-color: #f7f537;
float:left;
}
.left{
width: 200px;
background-color: #37f7c8;
float:left;
}
.right{
width: 200px;
background-color: #eb6100;
float:left;
}
footer{
width: 100%;
height: 30px;
background-color: #8ecfd4;
}
此時的效果圖:
這時中間的三欄并沒有在一行內(nèi)顯示,原因也很明確。三欄都浮動起來了,但是middle欄的寬度設置成了100%%uFF0C到時左右兩邊的撐不下?lián)Q行顯示了。
現(xiàn)在我們需要做的是將left欄放到左側(cè),right欄放到右側(cè)。那么我們就需要css的負margin了。
3、利用負邊距布局
讓左邊的盒子上去
.left{
margin-left:-100%;
}
讓右邊的盒子上去
.right {
margin-left:-200px;
}
此時的效果圖
實現(xiàn)固比固布局
雖然現(xiàn)在貌似已經(jīng)實現(xiàn)了我們想要的布局,但是在中間填充內(nèi)容的時候我們還是會發(fā)現(xiàn)問題。這一步我們也將中間的主體部分給一個高度,方便視覺效果。
.middle{
width: 100%;
height: 200px;
background-color: #f7f537;
float:left;
}
.left{
width: 200px;
height: 200px;
background-color: #37f7c8;
float:left;
}
.right{
width: 200px;
height: 200px;
background-color: #eb6100;
float:left;
}
從上面的效果圖可以看出,middle欄的內(nèi)容被兩邊的部分遮擋住的,這并不是我們想要的,所以我們的工作還得繼續(xù)。
4、讓中間自適應的盒子安全顯示(利用父級元素設置左右內(nèi)邊距的值,把父級的三個子盒子往中間擠。)
.container{
padding: 0 200px;
}
這里的200px是左右盒子的寬度。
效果如下:
利用父級的內(nèi)邊距將盒子往中間擠
我們可以看到,左右兩邊的內(nèi)邊距是有了,但是中間盒子上的內(nèi)容還是被壓著。
5、左右兩邊分開來(給左右兩個盒子加一個定位,加了定位之后左右兩個盒子就可以設置left和right值。)
.left{
position: relative;
left: -200px;
}
.right{
position: relative;
right: -200px;
}
看最終效果圖
現(xiàn)在我們的圣杯布局就OK啦!實現(xiàn)了我們要的效果,左右側(cè)的盒子固定,中間盒子自適應,而且中間盒子的內(nèi)容完全不受影響。希望對大家有幫助。
更多編程相關(guān)知識,請訪問:編程學習??!
更多關(guān)于云服務器,域名注冊,虛擬主機的問題,請訪問西部數(shù)碼官網(wǎng):m.ps-sw.cn