Flex布局那些事兒

Flex 是什么

Flex Box全稱為Flexible Box胰伍,也即彈性布局,F(xiàn)lexbox布局比較適合Web應(yīng)用程序的一些小組件和小規(guī)模的布局,而Grid布局更適合用于一些大規(guī)模的布局。本文我們對(duì)FlexBox布局進(jìn)行詳細(xì)的介紹悬嗓。

Flex語(yǔ)法

任何一個(gè)容器都可以指定為Flex布局,塊元素和內(nèi)聯(lián)元素都可以裕坊;Webkit內(nèi)核的瀏覽器包竹,必須加上-webkit前綴。
塊元素:.box { display : flex ;}
內(nèi)聯(lián)元素:.box { display : inline-flex ;}
webkit內(nèi)核瀏覽器:

.box{ 
     display:-webkit-flex;
     display:flex;
}

! 容器設(shè)為flex布局后碍庵,子元素的float映企、clear、vertical-align屬性將會(huì)失效
采用Flex布局的元素静浴,稱為Flex容器堰氓,它的所有子元素自動(dòng)成為容器成員,稱為Flex項(xiàng)目苹享,簡(jiǎn)稱“項(xiàng)目”双絮。

Flex基本概念

如下圖所示,容器默認(rèn)存在兩根軸:水平的主軸main axis和垂直的交叉軸cross axis得问。主軸的開(kāi)始位置(與邊框的交叉點(diǎn))叫做main start囤攀,結(jié)束位置叫做main end;交叉軸的開(kāi)始位置叫做cross start宫纬,結(jié)束位置叫做cross end焚挠。
基本上,F(xiàn)lex項(xiàng)目是沿著main axis(從main stratmain end) 或沿著cross size(從cross startcross end)排列漓骚。

FlexBox.png

容器屬性

容器共有6個(gè)屬性蝌衔,分別是:flex-direrction榛泛、flex-wrap、flex-flow噩斟、justify-content曹锨、align-items、align-content剃允。

flex-direction

flex-direction屬性規(guī)定主軸的方向沛简,即容器項(xiàng)目的排列方向。
flex-direction有四個(gè)值:row斥废、row-reverse椒楣、column、column-reverse营袜。

flex-direction

row為默認(rèn)值撒顿,表示主軸為水平方向丑罪,左邊為起點(diǎn)荚板。
row-reverse表示主軸為水平方向,右邊為起點(diǎn)吩屹,從右至左排列跪另。
column表示主軸為豎直方向,上邊為起點(diǎn)煤搜,從上至下排列免绿。
column-reverse表示主軸為豎直方向,下邊為起點(diǎn)擦盾,從下至上排列嘲驾。
代碼示例:

.box{
     flex-direction : row | row-reverse | column | column-reverse ;
}

flex-wrap

flex-wrap屬性定義,如果一條軸線排不下迹卢,如何換行辽故。
flex-wrap屬性有三個(gè)值:no-wrap、wrap腐碱、wrap-reverse誊垢;

flex-wrap

代碼示例:

.box{
  flex-wrap: nowrap | wrap | wrap-reverse;
}

no-wrap為默認(rèn)值,表示不換行

no-wrap

wrap為表示換行症见,換行后第一行在上方
wrap

wrap為表示換行喂走,換行后第一行在下方。
wrap-reverse

flex-flow

flex-flow屬性是flex-directionflex-wrap屬性的簡(jiǎn)寫(xiě)形式谋作,默認(rèn)值為row no-wrap
代碼示例:

.box {
  flex-flow: <flex-direction> || <flex-wrap>;
}

justify-content

justify-content屬性定義了屬性在主軸上的對(duì)齊方式芋肠,有五個(gè)值:flex-start、flex-end遵蚜、center帖池、space-between秒咐、space-around、

justify-content
  1. flex-start為默認(rèn)值碘裕,為左對(duì)齊方式携取;
  2. flex-end為右對(duì)齊方式;
  3. center為居中方式帮孔;
  4. space-between為兩端對(duì)齊方式雷滋,項(xiàng)目之間的間隔相等
  5. space-around每個(gè)項(xiàng)目?jī)蓚?cè)的間隔相等,項(xiàng)目之間的間隔比項(xiàng)目與邊框的間隔大一倍

代碼示例:

.box {
  justify-content: flex-start | flex-end | center | space-between | space-around;
}

align-items

align-items屬性定義項(xiàng)目在交叉軸上如何對(duì)齊文兢,有五個(gè)值:flex-start晤斩、flex-endcenter姆坚、stretch澳泵、base-line

align-items
  1. stretch為默認(rèn)值兼呵,如果項(xiàng)目未設(shè)置高度或設(shè)為auto時(shí)兔辅,項(xiàng)目將占滿整個(gè)容器的高度。
  2. flex-start表示在交叉軸的起點(diǎn)對(duì)齊击喂;
  3. flex-end表示在交叉軸的終點(diǎn)對(duì)齊维苔;
  4. center 表示在交叉軸的中點(diǎn)對(duì)齊;
  5. base-line表示以項(xiàng)目的第一行基線為準(zhǔn)對(duì)齊懂昂;

代碼示例:

.box{
    align-items : stretch | flex-start | flex-end | center | base-line
}

align-content

align-content屬性定義了多跟軸線的對(duì)齊方式介时,如果該項(xiàng)目只有一根軸線,則該屬性不起作用凌彬。
該屬性有6個(gè)值:flex-start沸柔、flex-end、center铲敛、space-between褐澎、space-around、stretch原探。

align-content
  1. flex-start:與交叉軸的起點(diǎn)對(duì)齊乱凿。
  2. flex-end:與交叉軸的終點(diǎn)對(duì)齊。
  3. center:與交叉軸的中點(diǎn)對(duì)齊咽弦。
  4. space-between:與交叉軸兩端對(duì)齊徒蟆,軸線之間的間隔平均分布。
  5. space-around:每根軸線兩側(cè)的間隔都相等型型。所以段审,軸線之間的間隔比軸線與邊框的間隔大一倍。
  6. stretch(默認(rèn)值):軸線占滿整個(gè)交叉軸闹蒜。
    代碼示例:
.box{
        align-content : flex-start | flex-end | center | space-between
       | space-around | stretch ;
}

項(xiàng)目屬性

項(xiàng)目屬性有6個(gè):order寺枉、flex-grow抑淫、flex-shrink、flex-basis姥闪、flex始苇、align-self

order

order屬性定義項(xiàng)目的排列順序。數(shù)值越小筐喳,排列越靠前催式,默認(rèn)為0。

order

代碼示例:.item { order: <integer> ; }

flex-grow

flex-grow屬性定義項(xiàng)目的放大比例避归,默認(rèn)為0荣月,即如果存在剩余空間,也不放大梳毙。

flex-grow

如果所有項(xiàng)目的flex-grow屬性都為1哺窄,則它們將等分剩余空間(如果有的話)。如果一個(gè)項(xiàng)目的flex-grow屬性為2账锹,其他項(xiàng)目都為1萌业,則前者占據(jù)的剩余空間將比其他項(xiàng)多一倍。
代碼示例:.item {flex-grow: <number> ; }

flex-shrink

flex-shrink屬性定義了項(xiàng)目的縮小比例牌废,默認(rèn)為1咽白,即如果空間不足,該項(xiàng)目將縮小鸟缕。
代碼示例:

.item {
 flex-shrink: <number>; /* default 1 */
}
flex-shrink

flex-basis

flex-basis屬性定義了在分配多余空間之前,項(xiàng)目占據(jù)的主軸空間(main size)排抬。瀏覽器根據(jù)這個(gè)屬性懂从,計(jì)算主軸是否有多余空間。它的默認(rèn)值為auto蹲蒲,即項(xiàng)目的本來(lái)大小番甩。

flex

flex屬性是flex-grow, flex-shrink 和 flex-basis的簡(jiǎn)寫(xiě),默認(rèn)值為0 1 auto届搁。后兩個(gè)屬性可選缘薛。

align-self

align-self屬性允許單個(gè)項(xiàng)目有與其他項(xiàng)目不一樣的對(duì)齊方式,可覆蓋align-items屬性卡睦。默認(rèn)值為auto宴胧,表示繼承父元素的align-items屬性,如果沒(méi)有父元素表锻,則等同于stretch恕齐。

align-self

代碼示例:

.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

Flex應(yīng)用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瞬逊,隨后出現(xiàn)的幾起案子显歧,更是在濱河造成了極大的恐慌仪或,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件士骤,死亡現(xiàn)場(chǎng)離奇詭異范删,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)拷肌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)瓶逃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人廓块,你說(shuō)我怎么就攤上這事厢绝。” “怎么了带猴?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵昔汉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我拴清,道長(zhǎng)靶病,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任口予,我火速辦了婚禮娄周,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沪停。我一直安慰自己煤辨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布木张。 她就那樣靜靜地躺著众辨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪舷礼。 梳的紋絲不亂的頭發(fā)上鹃彻,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音妻献,去河邊找鬼蛛株。 笑死,一個(gè)胖子當(dāng)著我的面吹牛育拨,可吹牛的內(nèi)容都是我干的谨履。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼至朗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼屉符!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤矗钟,失蹤者是張志新(化名)和其女友劉穎唆香,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體吨艇,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躬它,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了东涡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冯吓。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖疮跑,靈堂內(nèi)的尸體忽然破棺而出组贺,到底是詐尸還是另有隱情,我是刑警寧澤祖娘,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布失尖,位于F島的核電站,受9級(jí)特大地震影響渐苏,放射性物質(zhì)發(fā)生泄漏掀潮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一琼富、第九天 我趴在偏房一處隱蔽的房頂上張望仪吧。 院中可真熱鬧,春花似錦鞠眉、人聲如沸薯鼠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)人断。三九已至,卻和暖如春朝蜘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涩金。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工谱醇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人步做。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓副渴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親全度。 傳聞我的和親對(duì)象是個(gè)殘疾皇子煮剧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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