上一節詳細的分析了聖盃佈局,雙飛翼佈局從效果上來說,實現了和聖盃佈局相同的功能。是國內對聖盃佈局的改進版。css
————————————————————————————————————————————————————————————————————————————————————————————碎碎念。html
雙飛翼佈局相比於聖盃佈局要簡單不少,就三列布局來講,經過在內容div元素內部,再加一個div來放置內容,並給這個新加的div設置左右合適的外邊距。(即添加一個元素+兩個屬性)ide
免去了設置內容div的父元素的左右內邊距,左右側邊欄的相對定位,左右側邊欄的相位位移。(六個屬性)佈局
總的來講就是添加了一個元素兩個屬性,去除了六個屬性,可是在思路上確實簡單了不少。spa
下面來看具體的實現:3d
詳細代碼:code
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>聖盃佈局的幾種實現方式</title> <style> *{ margin:0; padding:0; } body{ min-width: 600px; color:#fff; } .header, .footer{ text-align: center; background-color: #ab96c5; } .layout1, .layout2, .layout3, .layout4, .layout5{ margin:5px; overflow: hidden; } .content, .aside{ min-height: 40px; text-align:center; } .content{ background-color: #793d56; width: 100%; } .aside{ background-color: #bb1c33; width:200px; } .inner1{ margin-left: 200px; } #aside1, #content1{ float: left; } #aside1{ margin-left: -100%; } .inner2{ margin-right: 200px; } #content2, #aside2{ float:left; } #aside2{ margin-left: -200px; } .inner3{ margin-left:200px; margin-right:200px; } #content3, #aside3-left, #aside3-right{ float:left; } #aside3-left{ margin-left: -100%; } #aside3-right{ margin-left: -200px; } .inner4{ margin-left: 400px; } #content4, #aside4-left1, #aside4-left2{ float: left; } #aside4-left1{ margin-left: -100%; } #aside4-left2{ position:relative; margin-left:-100%; left: 200px; } .inner5{ margin-right: 400px; } #content5, #aside5-right1, #aside5-right2{ float: left; } #aside5-right1{ margin-left: -200px; position: relative; right: 200px; } #aside5-right2{ margin-left:-200px; } </style> </head> <body> <div class="header">頭部</div> <div class="layout1"> <div class="content" id="content1"> <div class="inner1">內容區域自適應</div> </div> <div class="aside" id="aside1">左側邊欄固定</div> </div> <div class="layout2"> <div class="content" id="content2"> <div class="inner2">內容區域自適應</div> </div> <div class="aside" id="aside2">右側邊欄固定</div> </div> <div class="layout3"> <div class="content" id="content3"> <div class="inner3">內容區域自適應</div> </div> <div class="aside" id="aside3-left">左側邊欄固定</div> <div class="aside" id="aside3-right">右側邊欄固定</div> </div> <div class="layout4"> <div class="content" id="content4"> <div class="inner4">內容區域自適應</div> </div> <div class="aside" id="aside4-left1">左側邊欄1固定</div> <div class="aside" id="aside4-left2">左側邊欄2固定</div> </div> <div class="layout5"> <div class="content" id="content5"> <div class="inner5">內容區域自適應</div> </div> <div class="aside" id="aside5-right1">右側邊欄1固定</div> <div class="aside" id="aside5-right2">右側邊欄2固定</div> </div> <div class="footer">尾部</div> </body> </html>
各類狀況再也不作詳細的說明了,這裏只詳細的說一下兩邊側欄固定寬度,中間欄自適應是怎麼實現的。htm
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .content, .aside{ color:#fff; min-height: 40px; /*text-align:center;*/ } .content{ background-color: #793d56; width: 100%; } .aside{ background-color: #bb1c33; width:200px; } .inner3{ margin-left:200px; margin-right:200px; } #content3, #aside3-left, #aside3-right{ float:left; } #aside3-left{ margin-left: -100%; } #aside3-right{ margin-left: -200px; } </style> </head> <body> <div class="layout3"> <div class="content" id="content3"> <div class="inner3">內容區域自適應</div> </div> <div class="aside" id="aside3-left">左側邊欄固定</div> <div class="aside" id="aside3-right">右側邊欄固定</div> </div> </body> </html>
a.首先,讓三欄所有左浮動:blog
b.將左右側邊欄拉上來放在指定的位置:參照css佈局之聖盃佈局,ci
若是單單是這樣操做,咱們會發現,中間欄的內容會被左右側邊欄遮住,能夠經過設置content這個div中的inner這個div的左右外邊距將content內的內容限定在可見的區域:
c.設置content內inner這個div的左右外邊距:
注意:這個時候左右定寬的側邊欄其實仍是佔用了content這個div的區域了,經過3D視圖能夠很容易看出來:
左右側邊欄和inner這個div都在content這個div上,而左右側邊欄是緊貼着的,inner則是一個盒子。