CSS彈性布局FlexBox用法詳解

Flex彈性布局,將是未來布局的首選,幾乎所有的瀏覽器都已支持芭析。

傳統(tǒng)的盒模型display+position+float方案針對(duì)一些特殊的布局較考驗(yàn)程序員的功力截珍,比如垂直居中(還記得面試官第一個(gè)問題就是:騷年攀甚,茴字有幾種寫法?垂直居中有幾種方法岗喉?)秋度。

1、Flex布局全屬性介紹

如果一個(gè)元素指定了display:flex钱床,我們就說這個(gè)元素指定了Flex布局(彈性布局)荚斯,并且稱它為容器,容器內(nèi)的子元素成為item項(xiàng)查牌,后面都這么稱呼他們事期。任何元素都能指定為Flex布局,行內(nèi)元素可以通過display:inline-flex來指定纸颜。指定了Flex布局后兽泣,容器的所有子元素的floatclearvertical-align屬性都將失效胁孙。
對(duì)于下面的html:
<div class="box">
????<div class="item1"></div>
????<div class="item2"></div>
????<div class="item3"></div>
</div>
容器指定了Flex布局后唠倦,總共只有下面6個(gè)屬性可搭配使用:
.box {
????display: flex;
????flex-direction: row(默認(rèn)) | row-reverse | column | column-reverse;
????flex-wrap: nowrap(默認(rèn)) | wrap | wrap-reverse;
????flex-flow: <flex-direction> || <flex-wrap>(僅僅是前面兩個(gè)屬性的簡(jiǎn)寫形式称鳞,可先忽略);
????justify-content: flex-start(默認(rèn)) | flex-end | center | space-between | space-around | space-evenly;
????align-items: flex-start | flex-end | center | baseline | stretch(默認(rèn));
????align-content: flex-start | flex-end | center | space-between | space-around | stretch(默認(rèn));
}
flex-direction:定義了主軸的方向。
flex-wrap:如果一條軸線排不下稠鼻,item項(xiàng)換行的方式冈止。
justify-content:定義了item項(xiàng)在主軸上的對(duì)齊方式。
align-items:定義了item項(xiàng)在副軸上的對(duì)齊方式候齿。
align-content:定義了多根軸線的對(duì)齊方式熙暴。如果item項(xiàng)只有一根軸線,該屬性不起作用毛肋。
討論6個(gè)屬性前怨咪,先要了解Flex布局的隱藏概念主軸副軸,很簡(jiǎn)單润匙,它們表示容器內(nèi)item項(xiàng)的排列方向诗眨。主軸默認(rèn)為水平從左到右,副軸默認(rèn)為垂直從上到下孕讳。沒錯(cuò)匠楚,主軸的方向就是通過flex-direction屬性設(shè)置的,F(xiàn)lex布局沒有設(shè)置副軸的屬性厂财,所以芋簿,設(shè)置主軸為水平row時(shí),副軸自動(dòng)變?yōu)榇怪?code>column璃饱,反之与斤,設(shè)置主軸為垂直column時(shí),副軸自動(dòng)變?yōu)樗?code>row荚恶。

1.1 flex-direction屬性

表示主軸的方向撩穿。
.box{
????flex-direction:row | row-reverse | column | column-reverse;
}
有4個(gè)可選值:
1、row:主軸從左到右谒撼。
2食寡、row-reverse:主軸從右到左。
3廓潜、column:主軸從上到下抵皱。
4、column-reverse:主軸從下到上辩蛋。
假設(shè)容器共有5個(gè)item項(xiàng)呻畸,效果如下圖,注意:指定了Flex布局后item項(xiàng)之間是沒有間隔的:

1.2 justify-content屬性

表示item項(xiàng)在主軸上的對(duì)齊方式堪澎。
.box {
????justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;
}
有6個(gè)可選值:
1擂错、flex-start:主軸頭對(duì)齊。主軸是row則為左對(duì)齊樱蛤,主軸是column則為頂部對(duì)齊钮呀。
2、flex-end:主軸尾對(duì)齊昨凡。同上爽醋。
3、center:居中便脊。
4蚂四、space-between: 兩端對(duì)齊,item項(xiàng)之間的間隔相等哪痰。
5遂赠、space-around:每個(gè)item項(xiàng)兩側(cè)的間隔相等。所以晌杰,item項(xiàng)之間的間隔比item項(xiàng)與邊框的間隔大一倍跷睦。
6、space-evenly;:等分對(duì)齊肋演。item之間的間隔和item與邊框的間隔一致抑诸。
假設(shè)容器共有5個(gè)item項(xiàng),效果如下:



主軸為row-reverser和column-reverse兩個(gè)就不展示了爹殊。

1.3 align-items屬性

表示items項(xiàng)在副軸方向上的對(duì)齊方式蜕乡。剛開始直接上手彈性布局的時(shí)候,快被它搞糊涂了梗夸,justify-content是主軸對(duì)齊方式层玲,很自然的想到align-content是副軸對(duì)齊方式,對(duì)仗工整啊反症,可align-items才是對(duì)齊方式辛块,align-content有這個(gè)屬性,卻是別的含義惰帽。
.box {
????align-items: flex-start | flex-end | center | baseline | stretch(默認(rèn)值);
}
有5個(gè)可選值:
1憨降、flex-start:副軸頭對(duì)齊。副軸是row則為左對(duì)齊该酗,副軸是column則為頂部對(duì)齊授药。
2、flex-end:副軸尾對(duì)齊呜魄。同上悔叽。
3、center:居中爵嗅。
4娇澎、baseline:以各個(gè) item項(xiàng)的第一行文字的基線對(duì)齊。
5睹晒、stretch:如果item項(xiàng)未設(shè)置高度或設(shè)為auto趟庄,將占滿整個(gè)容器的高度括细。
假設(shè)容器共有3個(gè)尺寸不一的item項(xiàng),效果如下:

1.4 flex-wrap和align-content屬性

flex-wrap表示items項(xiàng)在主軸方向上的換行方式戚啥。
align-content表示多根軸線時(shí)的對(duì)齊方式奋单,如果只有一根軸線(不換行)則此屬性無效。
.box {
????flex-wrap: nowrap(默認(rèn)值) | wrap | wrap-reverse;
????align-content: flex-start | flex-end | center | space-between | space-around | stretch(默認(rèn)值);
}
1猫十、nowrap:不換行览濒,item項(xiàng)總寬度超出容器寬度時(shí),item項(xiàng)會(huì)被壓縮拖云。
2贷笛、wrap:換行,且第一行在最上面宙项。
3乏苦、wrap-reverse:換行,且第一行在最下面杉允。
align-contentalign-items可選值的意義相同邑贴,只是沒有space-baseline值。
假設(shè)容器共有11個(gè)尺寸不一的item項(xiàng)叔磷,效果如下:


設(shè)置換行后11個(gè)item項(xiàng)被分成了兩行拢驾,因此就有了兩條主軸,align-content就是來設(shè)置這兩條主軸的對(duì)齊方式改基,當(dāng)主軸為水平方向時(shí)效果如下:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末繁疤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子秕狰,更是在濱河造成了極大的恐慌稠腊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸣哀,死亡現(xiàn)場(chǎng)離奇詭異架忌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)我衬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門叹放,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挠羔,你說我怎么就攤上這事井仰。” “怎么了破加?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵俱恶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)合是,這世上最難降的妖魔是什么了罪? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮端仰,結(jié)果婚禮上捶惜,老公的妹妹穿的比我還像新娘田藐。我一直安慰自己荔烧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布汽久。 她就那樣靜靜地躺著鹤竭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪景醇。 梳的紋絲不亂的頭發(fā)上臀稚,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音三痰,去河邊找鬼吧寺。 笑死,一個(gè)胖子當(dāng)著我的面吹牛散劫,可吹牛的內(nèi)容都是我干的稚机。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼获搏,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼赖条!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起常熙,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤纬乍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后裸卫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仿贬,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年墓贿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茧泪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡募壕,死狀恐怖调炬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舱馅,我是刑警寧澤缰泡,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響棘钞,放射性物質(zhì)發(fā)生泄漏缠借。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一宜猜、第九天 我趴在偏房一處隱蔽的房頂上張望泼返。 院中可真熱鬧,春花似錦姨拥、人聲如沸绅喉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)柴罐。三九已至,卻和暖如春憨奸,著一層夾襖步出監(jiān)牢的瞬間革屠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工排宰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留似芝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓板甘,卻偏偏與公主長(zhǎng)得像党瓮,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子虾啦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

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