上一次咱們已經說完了聖盃佈局,此次來講說雙飛翼佈局吧。html
首先,先給上所有代碼佈局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>雙飛翼佈局</title> <style> * { padding: 0; margin: 0; } header, footer { text-align: center; width: 100%; background-color: #bbbbbb; } .text { text-align: center; line-height: 200px; font-size: 40px; color: #fff; } .bd { overflow: hidden; } .main { float: left; width: 100%; height: 200px; background-color: #ddd; } .main-content { margin: 0 200px; } .left { float: left; width: 200px; height: 200px; background-color: #da4242; /* 產生布局效果的屬性 */ margin-left: -100%; } .right { float: left; width: 200px; height: 200px; background-color: #4ddef1; /* 產生布局效果的屬性 */ margin-left: -200px; } </style> </head> <body> <header>雙飛翼佈局</header> <div class="bd"> <div class="main text"> <div class="main-content">main</div> </div> <div class="left text"> left </div> <div class="right text"> right </div> </div> <footer style:"clear:both">footer</footer> </body> </html>
上述代碼與聖盃佈局相比HTML的結構不同,在中間欄多了一個內容欄,根據盒子模型,咱們就不能在main欄設置margin,由於以前設置了width:100%,若再設置margin會ui
超過所設寬度,咱們用內容欄存放內容,並設置margin。spa
逐步解析3d
雙飛翼佈局與聖盃佈局前幾步是同樣的,code
1.給中間欄main設置width:100%,讓它始終佔滿窗口,這樣纔有自適應的效果。設置背景顏色htm
2.給左右兩個欄固定width和height。設置背景顏色blog
效果以下:it
3.給三個欄設置左浮動;float:left(注意清除浮動,由於浮動會致使父元素高度塌陷)class
4.這裏開始是重頭戲了,咱們使用到強大的負外邊距了,咱們先處理左欄,由於中間欄的寬度爲100%,因此左欄被擠到下面去了。如今left要到最左邊的位置,因此咱們在left的樣式下輸入:margin-left:-100%;
5.同理,接下來讓right到main的右邊,只須要設置margin-left的值爲負的right的寬,使main重疊right的寬度,由於設置了浮動因此right就會到main的右邊。
6.中間內容欄設置 margin: 0 200px;
至此咱們的雙飛翼佈局就已經實現了
在此說說聖盃佈局與雙飛翼佈局的區別吧:
相同點:
1.兩個都是三欄式佈局,中間欄優先放,保證優先渲染
2.實現方式都是左浮動
不一樣點:
1聖盃佈局是中間欄爲兩邊騰開位置。雙飛翼佈局則是中間欄不變,將內容部分爲兩邊騰開位置