CSS三欄布局的四種方法

前言

總括: 不管是三欄布局還是兩欄布局都是我們在平時項目里經(jīng)常使用的哀蘑,也許你不知道什么事三欄布局什么是兩欄布局但實際已經(jīng)在用诚卸,或許你知道三欄布局的一種或兩種方法,但實際操作中也只會依賴那某一種方法绘迁,本文具體的介紹了三欄布局的四種方法合溺,并介紹了它的使用場景。

年華一去不復(fù)返缀台,事業(yè)放棄再難成辫愉。

正文

所謂三欄布局就是指頁面分為左中右三部分然后對中間一部分做自適應(yīng)的一種布局方式。

1.絕對定位法

HTML代碼如下:

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

CSS代碼如下:

//簡單的進(jìn)行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空出左右元素所占據(jù)的空間
.main{
    margin:0px 100px 200px 0px;
    height:100%;
    background: blue;
}

該方法有個明顯的缺點,就是如果中間欄含有最小寬度限制适荣,或是含有寬度的內(nèi)部元素的妖,當(dāng)瀏覽器寬度小到一定程度,會發(fā)生層重疊的情況高蜂。

2. 圣杯布局

HTML代碼如下:

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

CSS代碼如下:

//習(xí)慣性的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;
}

相關(guān)解釋如下:

  • (1)中間部分需要根據(jù)瀏覽器寬度的變化而變化,所以要用100%,這里設(shè)左中右向左浮動律罢,因為中間100%,左層和右層根本沒有位置上去
  • (2)把左層margin負(fù)100后,發(fā)現(xiàn)left上去了误辑,因為負(fù)到出窗口沒位置了沧踏,只能往上挪
  • (3)按第二步這個方法,可以得出它只要挪動窗口寬度那么寬就能到最左邊了巾钉,利用負(fù)邊距翘狱,把左右欄定位
  • (4)但由于左右欄遮擋住了中間部分,于是采用相對定位方法砰苍,各自相對于自己把自己挪出去潦匈,得到最終結(jié)果

3. 雙飛翼布局

HTML代碼如下:

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

CSS代碼如下:

//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;
}

圣杯布局實際看起來是復(fù)雜的后期維護(hù)性也不是很高,在淘寶UED的探討下赚导,出來了一種新的布局方式就是雙飛翼布局茬缩,代碼如上。增加多一個div就可以不用相對布局了吼旧,只用到了浮動和負(fù)邊距凰锡。和圣杯布局差異的地方已經(jīng)被注釋。

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%;
}
//中間自適應(yīng)
.main {
    background: blue;
    height: 100%;
    margin:0px 100px 200px 0px;
}
//右欄右浮動
.right {
    background: red;
    width: 200px;
    float: right;
    height: 100%;
}

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

后記

四種方法其實只有圣杯布局和雙飛翼布局較難理解掂为,但實際上理解了圣杯布局,雙飛翼布局自然就理解了厂置。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末菩掏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子昵济,更是在濱河造成了極大的恐慌智绸,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件访忿,死亡現(xiàn)場離奇詭異瞧栗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)海铆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門迹恐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卧斟,你說我怎么就攤上這事殴边。” “怎么了珍语?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵锤岸,是天一觀的道長。 經(jīng)常有香客問我板乙,道長是偷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蛋铆,結(jié)果婚禮上馋评,老公的妹妹穿的比我還像新娘。我一直安慰自己刺啦,他們只是感情好留特,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著洪燥,像睡著了一般磕秤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捧韵,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天市咆,我揣著相機(jī)與錄音,去河邊找鬼再来。 笑死蒙兰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芒篷。 我是一名探鬼主播搜变,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼针炉!你這毒婦竟也來了挠他?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤篡帕,失蹤者是張志新(化名)和其女友劉穎殖侵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镰烧,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡拢军,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了怔鳖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茉唉。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖结执,靈堂內(nèi)的尸體忽然破棺而出度陆,到底是詐尸還是另有隱情,我是刑警寧澤献幔,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布坚芜,位于F島的核電站,受9級特大地震影響斜姥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一铸敏、第九天 我趴在偏房一處隱蔽的房頂上張望缚忧。 院中可真熱鬧,春花似錦杈笔、人聲如沸闪水。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽球榆。三九已至,卻和暖如春禁筏,著一層夾襖步出監(jiān)牢的瞬間持钉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工篱昔, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留每强,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓州刽,卻偏偏與公主長得像空执,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子穗椅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容