前言
其實(shí)不管是三欄布局還是兩欄布局都是我們?cè)谄綍r(shí)項(xiàng)目里經(jīng)常使用的,也許你不知道什么事三欄布局什么是兩欄布局但實(shí)際已經(jīng)在用,或許你知道三欄布局的一種或兩種方法,但實(shí)際操作中也只會(huì)依賴(lài)那某一種方法,本文具體的介紹了三欄布局的四種方法,并介紹了它的使用場(chǎng)景。
所謂三欄布局就是指頁(yè)面分為左中右三部分然后對(duì)中間一部分做自適應(yīng)的一種布局方式。
1.絕對(duì)定位法
HTML代碼如下:
<div class="left">Left</div><div class="main">Main</div><div class="right">Right</div>
CSS代碼如下:
//簡(jiǎn)單的進(jìn)行CSS resetbody,html{ height:100%; padding: 0px; margin:0px;}//左右絕對(duì)定位.left,.right{ position: absolute; top:0px; background: red; height:100%;}.left{ left:0; width:100px;}.right{ right:0px; width:200px;}//中間使用margin空出左右元素所占據(jù)的空間.main{ margin:0px 200px 0px 100px; height:100%; background: blue;}該方法有個(gè)明顯的缺點(diǎn),就是如果中間欄含有最小寬度限制,或是含有寬度的內(nèi)部元素,當(dāng)瀏覽器寬度小到一定程度,會(huì)發(fā)生層重疊的情況。
2. 圣杯布局
HTML代碼如下:
//注意元素次序<div class="main">Main</div><div class="left">Left</div><div class="right">Right</div>
CSS代碼如下:
//習(xí)慣性的CSS resetbody,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;}相關(guān)解釋如下:
(1)中間部分需要根據(jù)瀏覽器寬度的變化而變化,所以要用100%,這里設(shè)左中右向左浮動(dòng),因?yàn)橹虚g100%,左層和右層根本沒(méi)有位置上去
(2)把左層margin負(fù)100后,發(fā)現(xiàn)left上去了,因?yàn)樨?fù)到出窗口沒(méi)位置了,只能往上挪
(3)按第二步這個(gè)方法,可以得出它只要挪動(dòng)窗口寬度那么寬就能到最左邊了,利用負(fù)邊距,把左右欄定位
(4)但由于左右欄遮擋住了中間部分,于是采用相對(duì)定位方法,各自相對(duì)于自己把自己挪出去,得到最終結(jié)果
3. 雙飛翼布局
HTML代碼如下:
<div class="main"> <div class="inner"> Main </div></div><div class="left">Left</div><div class="right">Right</div>
CSS代碼如下:
//CSS resetbody,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;}圣杯布局實(shí)際看起來(lái)是復(fù)雜的后期維護(hù)性也不是很高,在淘寶UED的探討下,出來(lái)了一種新的布局方式就是雙飛翼布局,代碼如上。增加多一個(gè)div就可以不用相對(duì)布局了,只用到了浮動(dòng)和負(fù)邊距。和圣杯布局差異的地方已經(jīng)被注釋。
4. 浮動(dòng)
HTML代碼如下:
//注意元素次序<div class="left">Left</div><div class="right">Right</div><div class="main">Main</div>
CSS代碼如下:
//CSS resetbody,html { height:100%; padding: 0; margin: 0}//左欄左浮動(dòng).left { background: red; width: 100px; float: left; height: 100%;}//中間自適應(yīng).main { background: blue; height: 100%; margin:0px 200px 0px 100px;}//右欄右浮動(dòng).right { background: red; width: 200px; float: right; height: 100%;}這種方式代碼足夠簡(jiǎn)潔與高效,也容易理解
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,四種方法其實(shí)只有圣杯布局和雙飛翼布局較難理解,但實(shí)際上理解了圣杯布局,雙飛翼布局自然就理解了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如有疑問(wèn)大家可以留言交流。
新聞熱點(diǎn)
疑難解答
圖片精選