前端常用布局

1、水平居中

方法一:margin:0 auto;

是最常見的水平居中解決方案睦擂,但有其局限性:塊級(jí)元素,已知寬度杖玲,父級(jí)元素有寬度

方法二:text-align + inline-block

在父級(jí)元素上設(shè)置text-align:center;將需要居中的元素設(shè)置為inline-block(或inline)

方法三:position絕對(duì)定位

對(duì)于需要居中的元素:

position:absolute;(同時(shí)設(shè)置父級(jí)元素relative) 
left:50%;(包括了元素本身的寬度)
transform:translateX(-50%);

局限性:CSS3屬性兼容性不好

方法四:flex彈性布局之justify-content

作用于父級(jí)元素

#parent{
  display:flex;
  justify-content:center;`
}

2顿仇、垂直居中

方法一:height +line-height

對(duì)于一個(gè)需要居中的 行內(nèi)(塊)元素 ,設(shè)置父元素的高度與行高相等摆马,即可實(shí)現(xiàn)垂直居中

方法二:table-cell + vertical-align

.parent{
  display:table-cell;
  vertical-align:middle
}

方法三:absolute+transform

類似于水平居中

方法四:flex+align-items

類似于水平居中

.parent{
  display:flex;
  align-items:center;
}

3臼闻、左邊固定右邊自適應(yīng)

HTML
<div class="left"></div>
<div class="right"></div>

CSS
.left{
    float:left;
    width: 200px;
    height:400px;
    background-color: blue;
}

.right{
    height:400px;
    background-color: red;
        margin-left:210px;
}

4、右邊固定左邊自適應(yīng)

方法與 情況三 類似今膊,但有一點(diǎn)需要注意:無論是哪種情況些阅,再html結(jié)構(gòu)中,都要把浮動(dòng)塊寫在前面斑唬,否則浮動(dòng)塊會(huì)被擠到下一行。

HTML
<div class="right"></div>
<div class="left"></div>

CSS
.left{
    height:400px;
    background-color: red;
        margin-right:210px;
}

.right{
    float:right;
    width: 200px;
    height:400px;
    background-color: blue;
}

5黎泣、兩邊固定中間自適應(yīng)

類似于兩欄布局恕刘,同樣是浮動(dòng)欄先渲染:

HTML:
<div class="left"></div>
<div class="right"></div>
<div class="middle"></div>
CSS:
.left{
    float:left;
    width: 200px;
    height:400px;
    background-color: red;
}

.right{
    float:right;
    width:200px;
    height:400px;
    background-color: blue;
}
.middle{
    height: 400px;
    background-color: yellow;
    margin:0 210px 0 210px;
}

但在實(shí)際情況下,中間欄才是主要內(nèi)容抒倚,需要優(yōu)先渲染褐着,也就是說,DOM結(jié)構(gòu)中托呕,中間欄需要寫在最前面含蓉,但是上文中提到過频敛,浮動(dòng)塊必須寫在最前面;解決方案是:三欄全浮動(dòng)馅扣。
有以下兩種經(jīng)典的布局方式斟赚,它們的共同點(diǎn)是:固比固布局,中間欄放到文檔流前面差油,保證先行渲染拗军。
實(shí)現(xiàn)方式是:三欄全部float:left浮動(dòng)。
區(qū)別在于解決中間欄div的內(nèi)容不被遮擋上:圣杯布局是在父級(jí)添加左右padding蓄喇,將三欄全部擠到中間发侵,然后在兩側(cè)邊欄添加相對(duì)定位,配合left和right屬性妆偏,將它們挪向兩邊刃鳄,為中間內(nèi)容騰出位置;而雙飛翼布局是在中間欄的div中嵌套一個(gè)div钱骂,內(nèi)容寫在嵌套的div里叔锐,對(duì)嵌套的div設(shè)置margin-left和margin-right。

5.1 圣杯布局

HTML:
<div class="container">
    <div class="middle"></div>
    <div class="left"></div>
    <div class="right"></div>
</div>
CSS:
.container{
    overflow:hidden;
    padding:0 200px;
}
.middle{
    width:100%;
    height:400px;
    float:left;
    background-color: yellow;
}
.left{
    width:200px;
    height:400px;
    float:left;
    background-color: blue;
    margin-left:-100%;(擠上去)
    position:relative;
    left:-200px;
}
.right{
    width:200px;
    height:400px;
    float:left;
    background-color: darkseagreen;
    margin-left:-200px;(擠上去)
    position:relative;
    right:-200px;
}
/*
解決遮擋的代碼是:
.container中 padding:0 200px;
.left中 position:relative;left:-200px;
.right中 position:relative;right:-200px;
*/

5.2 雙飛翼布局

HTML:
<div class="container">
    <div class="middle">
                 <div id="inside">middle</div>
        </div>
    <div class="left"></div>
    <div class="right"></div>
</div>
CSS:
.container{
    overflow:hidden;
}
.middle{
    width:100%;
    height:400px;
    float:left;
    background-color: yellow;
}
.left{
    width:200px;
    height:400px;
    float:left;
    background-color: blue;
    margin-left:-100%;(擠上去)
}
.right{
    width:200px;
    height:400px;
    float:left;
    background-color: darkseagreen;
    margin-left:-200px;(擠上去)
}
/*解決遮擋*/
#inside{
    margin:0 210px;
    height:400px;
    background-color:red;
}

如圖:


雙飛翼布局

清除浮動(dòng)

由于上述布局很多用到了浮動(dòng)罐柳,為了消除浮動(dòng)元素對(duì)于其它元素布局的影響掌腰,就必須清除浮動(dòng)。

浮動(dòng)會(huì)導(dǎo)致的問題:

1张吉、父級(jí)元素不能正常撐開
2齿梁、背景不能正常顯示
3、margin不能正確顯示
etc..

清除浮動(dòng)的部分方法:

1肮蛹、在浮動(dòng)元素的同級(jí)勺择,增加一個(gè)空元素,并給該空元素設(shè)置clear:both;
2伦忠、在父級(jí)元素上設(shè)置overflow:auto;zoom:1
3省核、在父級(jí)添加偽元素after:after{content:"";display:block;clear:both;}

最后一點(diǎn)

上文中提到的兩欄布局,都是優(yōu)先加載了浮動(dòng)欄昆码,若要內(nèi)容欄優(yōu)先气忠,可以參考雙飛翼布局和圣杯布局,實(shí)現(xiàn)方式是一樣的赋咽。
或者換一種思路:之前我們浮動(dòng)的是固定欄旧噪,現(xiàn)在可以浮動(dòng)自適應(yīng)欄,以左欄固定右欄自適應(yīng)為例:設(shè)置右欄100%脓匿,右浮動(dòng)淘钟;然后再寫左邊欄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陪毡,一起剝皮案震驚了整個(gè)濱河市米母,隨后出現(xiàn)的幾起案子勾扭,更是在濱河造成了極大的恐慌,老刑警劉巖铁瞒,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妙色,死亡現(xiàn)場離奇詭異,居然都是意外死亡精拟,警方通過查閱死者的電腦和手機(jī)燎斩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜂绎,“玉大人栅表,你說我怎么就攤上這事∈υ妫” “怎么了怪瓶?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長践美。 經(jīng)常有香客問我洗贰,道長,這世上最難降的妖魔是什么陨倡? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任敛滋,我火速辦了婚禮,結(jié)果婚禮上兴革,老公的妹妹穿的比我還像新娘绎晃。我一直安慰自己,他們只是感情好杂曲,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布庶艾。 她就那樣靜靜地躺著,像睡著了一般擎勘。 火紅的嫁衣襯著肌膚如雪咱揍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天棚饵,我揣著相機(jī)與錄音煤裙,去河邊找鬼。 笑死噪漾,一個(gè)胖子當(dāng)著我的面吹牛积暖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播怪与,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缅疟!你這毒婦竟也來了分别?” 一聲冷哼從身側(cè)響起遍愿,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎耘斩,沒想到半個(gè)月后沼填,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡括授,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年坞笙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荚虚。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡薛夜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出版述,到底是詐尸還是另有隱情梯澜,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布渴析,位于F島的核電站晚伙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏俭茧。R本人自食惡果不足惜咆疗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望母债。 院中可真熱鬧午磁,春花似錦、人聲如沸场斑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漏隐。三九已至喧半,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間青责,已是汗流浹背挺据。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留脖隶,地道東北人扁耐。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像产阱,于是被迫代替她去往敵國和親婉称。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,743評(píng)論 1 92
  • 收聽音頻,戳鏈接,舊號(hào)itclan已暫停使用,歡迎關(guān)注微信itclanCoder公眾號(hào)可收聽更多音頻 前言 關(guān)于網(wǎng)...
    itclanCoder閱讀 8,159評(píng)論 3 30
  • 前言 溫馨提示:本文較長王暗,圖片較多悔据,本來是想寫一篇 CSS 布局方式的,但是奈何 CSS 布局方式種類太多并且實(shí)現(xiàn)...
    sunshine小小倩閱讀 3,124評(píng)論 0 59
  • CSS布局 布局是CSS中一個(gè)重要部分俗壹,本文總結(jié)了CSS布局中的常用技巧科汗,包括常用的水平居中、垂直居中方法绷雏,以及單...
    web前端學(xué)習(xí)閱讀 1,593評(píng)論 1 38
  • 單位的一戀愛一年的妹子头滔,最近總在我面前感嘆受不了男友。倒不是像所以過了熱戀期的男女一樣為雞毛蒜皮的小事兒吵涎显。她...
    姑蘇楚櫻閱讀 317評(píng)論 0 0