在CSS中,圣杯布局是指兩邊盒子寬度固定,中間盒子自適應的三欄布局,其中,中間欄放到文檔流前面,保證先行渲染;三欄全部使用“float:left”浮動,并配合left和right屬性。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設、田林網(wǎng)站維護、網(wǎng)站推廣。
前端的兩個經(jīng)典布局想必大家都有多了解--圣杯布局和雙飛翼布局,因為它既能體現(xiàn)你懂HTML結構又能體現(xiàn)出你對DIV+CSS布局的掌握。
事實上,圣杯布局其實和雙飛翼布局是一回事。它們實現(xiàn)的都是三欄布局,兩邊的盒子寬度固定,中間盒子自適應,也就是我們常說的固比固布局。它們實現(xiàn)的效果是一樣的,差別在于其實現(xiàn)的思想。
通過縮放頁面就可以發(fā)現(xiàn),隨著頁面的寬度的變化,這三欄布局是中間盒子優(yōu)先渲染,兩邊的盒子框子固定不變,即使頁面寬度變小,也不影響我們的瀏覽。注意:當你縮放頁面的時候,寬度不能小于700PX,為了安全起見,最好還是給body加一個最小寬度!
如果你有了那么一點理解以后,我們來看看圣杯布局的實現(xiàn):
注:reset部分的代碼大家自行添加
1、HTML結構:
Header內(nèi)容區(qū)
中間彈性區(qū)
左邊欄
右邊欄
有人可能會有疑惑,為什么中間的主體部分要寫在最前面。因為中間盒子是要被優(yōu)先渲染嘛~并且設置其自適應,也就是width:100%。
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%,到時左右兩邊的撐不下?lián)Q行顯示了。
現(xiàn)在我們需要做的是將left欄放到左側,right欄放到右側。那么我們就需要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)了我們要的效果,左右側的盒子固定,中間盒子自適應,而且中間盒子的內(nèi)容完全不受影響。希望對大家有幫助。
更多編程相關知識,請訪問:編程學習??!
當前標題:CSS什么是圣杯布局?
瀏覽地址:http://weahome.cn/article/cgchgi.html