CSS三欄佈局的四種方法

總括: 無論是三欄佈局仍是兩欄佈局都是咱們在平時項目裏常常使用的,也許你不知道什麼事三欄佈局什麼是兩欄佈局但實際已經在用,或許你知道三欄佈局的一種或兩種方法,但實際操做中也只會依賴那某一種方法,本文具體的介紹了三欄佈局的四種方法,並介紹了它的使用場景。

所謂三欄佈局就是指頁面分爲左中右三部分而後對中間一部分作自適應的一種佈局方式。css

1.絕對定位法

HTML代碼以下:html

<div class="left">Left</div> <div class="main">Main</div> <div class="right">Right</div> 

CSS代碼以下:瀏覽器

//簡單的進行CSS reset body,html{ height:100%; padding: 0px; margin:0px; } //左右絕對定位 .left,.right{ position: absolute; top:0px; background: red; height:100%; } .left{ left:0; width:100px; } .right{ right:0px; width:200px; } //中間使用margin空出左右元素所佔據的空間 .main{ margin:0px 200px 0px 100px; height:100%; background: blue; } 

該方法有個明顯的缺點,就是若是中間欄含有最小寬度限制,或是含有寬度的內部元素,當瀏覽器寬度小到必定程度,會發生層重疊的狀況。佈局

2. 聖盃佈局

HTML代碼以下:spa

//注意元素次序
<div class="main">Main</div>
<div class="left">Left</div>
<div class="right">Right</div>

CSS代碼以下:code

//習慣性的CSS reset body,html{ height:100%; padding: 0; margin: 0 } //父元素body空出左右欄位 body { padding-left: 100px; padding-right: 200px; } //左邊元素更改 .left { background: red; width: 100px; float: left; margin-left: -100%; position: relative; left: -100px; height: 100%; } //中間部分 .main { background: blue; width: 100%; height: 100%; float: left; } //右邊元素定義 .right { background: red; width: 200px; height: 100%; float: left; margin-left: -200px; position: relative; right: -200px; } 

相關解釋以下:htm

  • (1)中間部分須要根據瀏覽器寬度的變化而變化,因此要用100%,這裏設左中右向左浮動,由於中間100%,左層和右層根本沒有位置上去
  • (2)把左層margin負100後,發現left上去了,由於負到出窗口沒位置了,只能往上挪
  • (3)按第二步這個方法,能夠得出它只要挪動窗口寬度那麼寬就能到最左邊了,利用負邊距,把左右欄定位
  • (4)但因爲左右欄遮擋住了中間部分,因而採用相對定位方法,各自相對於本身把本身挪出去,獲得最終結果

3. 雙飛翼佈局

HTML代碼以下:it

<div class="main"> <div class="inner"> Main </div> </div> <div class="left">Left</div> <div class="right">Right</div> 

CSS代碼以下:io

//CSS reset body,html { height:100%; padding: 0; margin: 0 } body { /*padding-left:100px;*/ /*padding-right:200px;*/ } .left { background: red; width: 100px; float: left; margin-left: -100%; height: 100%; /*position: relative;*/ /*left:-100px;*/ } .main { background: blue; width: 100%; float: left; height: 100%; } .right { background: red; width: 200px; float: left; margin-left: -200px; height: 100%; /*position:relative;*/ /*right:-200px;*/ } //新增inner元素 .inner { margin-left: 100px; margin-right: 200px; } 

聖盃佈局實際看起來是複雜的後期維護性也不是很高,在淘寶UED的探討下,出來了一種新的佈局方式就是雙飛翼佈局,代碼如上。增長多一個div就能夠不用相對佈局了,只用到了浮動和負邊距。和聖盃佈局差別的地方已經被註釋。class

4. 浮動

HTML代碼以下:

//注意元素次序
<div class="left">Left</div> <div class="right">Right</div> <div class="main">Main</div> 

CSS代碼以下:

//CSS reset body,html { height:100%; padding: 0; margin: 0 } //左欄左浮動 .left { background: red; width: 100px; float: left; height: 100%; } //中間自適應 .main { background: blue; height: 100%; margin:0px 200px 0px 100px; } //右欄右浮動 .right { background: red; width: 200px; float: right; height: 100%; } 

這種方式代碼足夠簡潔與高效,也容易理解

相關文章
相關標籤/搜索