CSS中的布局詳解(三):flex布局

Flex布局又名彈性布局案疲,相比float+position布局寂汇,具有很強大的靈活性罐呼,而且目前已經(jīng)得到了所有瀏覽器的兼容。

個人認為flex布局非常靈活好用继控,所以這里參考了阮一峰老師的flex教程以及NEXT課程中的文檔械馆,把flex布局的所有屬性知識點自己動手實現(xiàn)一遍并總結(jié)胖眷。

Flex布局的使用

如果想要使用Flex布局,首先需要給容器指定Flex布局霹崎。

display: flex;
display: inline-flex; //行內(nèi)元素也可使用
display: -webkit-flex //Webkit瀏覽器內(nèi)核需要加上前綴

在使用了flex布局之后瘦材,float,clear仿畸,vertical-align將失效食棕。

Flex布局的基本概念

flex布局中枢希,有兩個基本概念:

  • 容器(flex container)
  • 項目(flex item)

如圖所示(圖片來源網(wǎng)絡):


由圖可見翼岁,容器中有兩根主軸:

  • 水平主軸(main axis)
    • 開始位置(main start)
    • 結(jié)束位置(main end)
  • 垂直交叉軸(cross axis)
    • 開始位置(cross start)
    • 結(jié)束位置(cross end)

在容器中,項目默認沿著主軸排列罗晕,單個項目占據(jù)主軸空間叫做(main size)千埃,占據(jù)的交叉軸空間叫做(cross size)憔儿。

容器(flex container)的屬性

容器屬性有6個:

1. flex-direction

  • flex-direction決定了主軸的方向,也就是item排列的方向放可,有4個值:
    • row(默認值):主軸為水平方向谒臼,左端為起點


    • row-reverse:主軸為水平方向,右端為起點


  • column:主軸為垂直方向耀里,上沿為起點


  • column-reverse:主軸為垂直方向蜈缤,下沿為起點


2. flex-wrap

  • flex-wrap屬性是規(guī)定當一條軸線排列不下item的時候,該如何換行冯挎。(item在默認情況下是按照軸線排列成一條線)底哥,有三個值:
    • nowrap(默認值):不換行


    • wrap:換行,第一行在上方


    • wrap-reverse:換行房官,第一行在下方


3.flex-flow

  • flex-flow是前兩種屬性的簡寫方式趾徽,可以寫成如下形式:
.box {
  flex-flow: <flex-direction> || <flex-wrap>;
}

4. justify-content

  • justify-content定義了item在主軸上的對齊方式,可能取5個值
    • flex-start(默認值):左對齊


    • flex-end:右對齊


    • center:居中


    • space-between:兩端對齊翰守,項目之間間隔都相等


    • space-around:每個項目兩側(cè)的間隔相等孵奶。所以項目之間的間隔比項目與邊框的間隔大一倍。


5. alien-items

alien-items定義item在交叉軸上如何對齊(此時交叉軸方向為從上至下)蜡峰,有5個值:

  • flex-start:交叉軸的起點對齊


  • flex-end:交叉軸的終點對齊


  • center:交叉軸的中點對齊


  • baseline:項目的第一行文字的基線對齊



    這里有一個問題:基線(base line)并不是漢字文字的下端沿了袁,而是英文字母“x”的下端沿。

  • stretch(默認值):如果item未設置高度或者設置成auto事示,將占滿整個容器寬度


6.align-content

align-content定義了多跟軸線的對齊方式早像,如果item只有一根軸線僻肖,該屬性不起作用肖爵,有6個值:

  • flex-start:與交叉軸的起點對齊


  • flex-end:與交叉軸的終點對齊


  • center:與交叉軸的中點對齊


  • space-between:與交叉軸兩端對齊,軸線之間間隔平均分布


  • space-around:每根軸線兩側(cè)的間隔都相等臀脏,所以軸線之間的間隔比軸線與邊框的間隔大一倍


  • stretch(默認值):軸線占滿整個交叉軸


item(子元素)的屬性

item的屬性有6個:

  • order:定義item的排列順序劝堪,數(shù)值越小排列越靠前冀自,默認為0。
    例如:
    將所有item的order屬性設置為6秒啦、5熬粗、4、3余境、2驻呐、1
.item6{
    order:6
}
//以此類推

*flex-grow:定義item的放大比例,默認為0芳来,也就是如果有剩余空間含末,也不放大。
例如:
設置item1的flex-grow屬性為2即舌,其余為默認值佣盒。

.item1{
    flex-grow:2;
}
  • flex-shrink:定義item的縮小比例,默認為1顽聂,也就是空間不足的時候肥惭,此item會縮小。
    例如:
    給item5設置了flex-shrink屬性為0紊搪,其他item皆為默認值1蜜葱,在空間不足的時候,它不縮小耀石。
.item {
    flex-shrink:0;
}
  • flex-basis:定義了在分配多余空間之前笼沥,項目占據(jù)的株洲空間。然后瀏覽器根據(jù)這個屬性來計算主軸是否有多余的空間娶牌。默認值為auto奔浅,即item本來的大小。
    例如诗良,給item5設置flex-basis屬性為100px:
.item5 {
    flex-basis:150px;
}
  • flex:這個屬性是前幾種屬性的簡寫汹桦,默認值為0 1 auto ,后兩個可選鉴裹。
    例如:
item5 {
    flex : flex: 2 2 10%;
}
  • align-self:允許單個item和其他item有不一樣的對齊方式舞骆,可覆蓋align-items屬性,默認值為auto径荔,表示繼承父元素的align-items屬性督禽,如果沒有則等同于stretch。
    和align-items類似总处,同樣有以下幾種值:
  • auto
  • flex-start
  • flex-end
  • center
  • baseline
  • stretch

參考資料:

我的個人博客:http://chronosblog.top
我的微信公眾號:runtustory

CSS布局詳解系列筆記索引:

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狈惫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鹦马,更是在濱河造成了極大的恐慌胧谈,老刑警劉巖忆肾,帶你破解...
    沈念sama閱讀 210,835評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異菱肖,居然都是意外死亡客冈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評論 2 383
  • 文/潘曉璐 我一進店門稳强,熙熙樓的掌柜王于貴愁眉苦臉地迎上來场仲,“玉大人,你說我怎么就攤上這事退疫×蔷剑” “怎么了?”我有些...
    開封第一講書人閱讀 156,481評論 0 345
  • 文/不壞的土叔 我叫張陵蹄咖,是天一觀的道長褐健。 經(jīng)常有香客問我,道長澜汤,這世上最難降的妖魔是什么蚜迅? 我笑而不...
    開封第一講書人閱讀 56,303評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮俊抵,結(jié)果婚禮上谁不,老公的妹妹穿的比我還像新娘。我一直安慰自己徽诲,他們只是感情好刹帕,可當我...
    茶點故事閱讀 65,375評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著谎替,像睡著了一般偷溺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钱贯,一...
    開封第一講書人閱讀 49,729評論 1 289
  • 那天挫掏,我揣著相機與錄音,去河邊找鬼秩命。 笑死尉共,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的弃锐。 我是一名探鬼主播袄友,決...
    沈念sama閱讀 38,877評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼霹菊!你這毒婦竟也來了剧蚣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,633評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎券敌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柳洋,經(jīng)...
    沈念sama閱讀 44,088評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡待诅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,443評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了熊镣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卑雁。...
    茶點故事閱讀 38,563評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绪囱,靈堂內(nèi)的尸體忽然破棺而出测蹲,到底是詐尸還是另有隱情,我是刑警寧澤鬼吵,帶...
    沈念sama閱讀 34,251評論 4 328
  • 正文 年R本政府宣布扣甲,位于F島的核電站,受9級特大地震影響齿椅,放射性物質(zhì)發(fā)生泄漏琉挖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,827評論 3 312
  • 文/蒙蒙 一涣脚、第九天 我趴在偏房一處隱蔽的房頂上張望示辈。 院中可真熱鬧,春花似錦遣蚀、人聲如沸矾麻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽险耀。三九已至,卻和暖如春玖喘,著一層夾襖步出監(jiān)牢的瞬間胰耗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評論 1 264
  • 我被黑心中介騙來泰國打工芒涡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柴灯,地道東北人。 一個月前我還...
    沈念sama閱讀 46,240評論 2 360
  • 正文 我出身青樓费尽,卻偏偏與公主長得像赠群,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子旱幼,可洞房花燭夜當晚...
    茶點故事閱讀 43,435評論 2 348

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

  • H5移動端知識點總結(jié) 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,424評論 0 26
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,460評論 0 6
  • 一查描、Flex布局是什么? Flex是Flexible Box的縮寫,意為”彈性布局”冬三,用來為盒狀模型提供最大的靈活...
    穿越人海遇見你閱讀 4,861評論 0 3
  • 寫在前面 之前一直對于布局有一種迷茫匀油,不知道該如何學習,以及學習到什么程度勾笆,在論壇上進行了提問敌蚜,老師給我做了解答。...
    KoalaT閱讀 298評論 0 2
  • 作者: 阮一峰日期: 2015年7月10日原文鏈接:http://www.ruanyifeng.com/blog/...
    Mike_Gu閱讀 973評論 0 6