FlexBox 彈性盒模型布局 - 父控件篇

彈性布局(flexble box)模塊指在提供一個更加有效的方式來布置,對齊和分部在容器之間的各項內(nèi)容,即使它們的大小是未知或者動態(tài)變化的。它的主要思想是讓容器有能力來改變項目的寬度和高度,以填滿可用空間(主要是為了容納所有類型的顯示設(shè)備和屏幕尺寸)的能力。

Flexbox是一個整體模塊,而不是單一的一個屬性,它涉及到了很多東西,包括它的整個屬性集,所有它需要在父容器設(shè)置也有的需要在子控件設(shè)置。

flexbox.png

基本上 伸縮項目是沿著主軸(main axis),從主軸起點(main start)到主軸終點(main end)或者沿著側(cè)軸(cross axis),從側(cè)軸起點(cross-start)到側(cè)軸終點(cross-end)排列

  • 主軸(main axis):伸縮容器的主軸,伸縮項目主要沿著這條軸進(jìn)行排列布局。它的(水平或者垂直)方向取決于"justify-start"屬性
  • 主軸起點(main start)和主軸終點(main end):伸縮項目防止在伸縮容器內(nèi)從主軸起點向主軸終點的方向
  • 主軸尺寸(mian size): 伸縮項目在主軸方向的寬度或者高度就是主軸的尺寸。伸縮項目主要的大小屬性主要是寬度,高度,主要取決于那一個對著主軸方向決定
  • 側(cè)軸(cross axis):垂直于主軸成為側(cè)軸。它的方向主要取決于主軸方向。
  • 側(cè)軸起點(cross start)和側(cè)軸終點(cross end): 伸縮行的配置從容器的側(cè)軸起點邊開始到終點邊結(jié)束
  • 側(cè)軸尺寸(cross size):伸縮項目在側(cè)軸方向的寬度或者高度就是項目的側(cè)軸長度,伸縮項目的側(cè)軸屬性由哪一個對著側(cè)軸方向決定
屬性介紹
display: flex | inline-flex (適用于父類容器元素上)

定義:一個flex容器,內(nèi)聯(lián)或者根據(jù)指定的值,來作用于下面的子類容器。

  • box 將對象作為彈性伸縮顯示
  • inline-box 講對象作為內(nèi)聯(lián)塊級彈性伸縮盒顯示
  • flexbox 講對象作為彈性伸縮盒顯示
  • inline-flexbox講對象作為內(nèi)聯(lián)塊級彈性伸縮盒顯示
  • flex 講對象作為彈性伸縮盒顯示 (目前使用的)
  • inline-flex講對象作為內(nèi)聯(lián)塊級伸縮盒顯示《目前使用的)

1.css 列(CSS columns)在彈性盒子中不起作用
2.float, clear and vertical-align 在flex項目中不起作用

flex-direction (適用于父類容器的元素上)

定義:設(shè)置或檢索伸縮盒對象的子元素在父容器中的位置。
flex-direction: row | row-reverse | column | column-reverse

  • row 橫向從左向右排隊 默認(rèn)
  • row-reverse 反轉(zhuǎn)橫向排列
  • column 縱向排列
  • column-reverse 反轉(zhuǎn)縱向排列 從后向前排列 最后一項拍在最前面

Flex-Direction Demo

flex-wrap (適用于父類容器上)

定義:設(shè)置或檢索伸縮盒對象的子元素超出父容器時是否換行
flex-wrap: nowrap | wrap | wrap-reverse

  • nowrap 當(dāng)子元素溢出父容器時不換行
  • wrap 當(dāng)子元素溢出父容器時自動換行
  • wrap-reverse 反轉(zhuǎn)wrap排列

Flex-Wrap Demo

flex-flow (適用于父類容器上)

定義:復(fù)合屬性。設(shè)置或檢索伸縮盒對象的子元素排列方式。
flex-flow: <‘flex-direction’> || <‘flex-wrap’>

  • [flex-driection] 定義彈性盒子元素的排列方向
  • [flex-wrap] 定義彈性盒子元素溢出父容器時是否換行

Flex-Flow Demo

justify-content (適用于父類容器上)

定義: 設(shè)置或檢索彈性盒子元素在主軸(橫軸)方向上的對齊方式。當(dāng)彈性盒里一行上的所有子元素都不能伸縮或已經(jīng)達(dá)到其最大值時,這一屬性可協(xié)助對多余的控件經(jīng)行分配。 當(dāng)元元素溢出某行時,這一屬性同樣會在對齊上進(jìn)行控制

justify-content: flex-start | flex-end | center | space-between | space-around

  • flex-start 彈性盒子元素講向行起始位置對齊。該行的第一個子元素的主起始位置的邊界與該行的主起始位置的邊界對齊
    同時所有后續(xù)的伸縮項目于前一個項目對齊

  • felx-end 彈性盒子元素將向行結(jié)束位置對齊。該行的子元素講相互對齊并在行中居中對齊,同時第一個元素與行的主起始位置的邊距等同于最后一個元素與行的主結(jié)束位置的邊距

  • center:彈性盒子元素將向行中間位置對齊。該行的子元素將相互對齊并在行中居中對齊,同時第一個元素與行的主起始位置的邊距等同與最后一個元素與行的主結(jié)束位置的邊距(如果剩余空間是負(fù)數(shù),則保持兩端相等長度的溢出)

  • space-between:彈性盒子元素會平均地分布在行里。如果最左邊的剩余空間是負(fù)數(shù),或該行只有一個子元素,則該值等效于'flex-start'。在其它情況下,第一個元素的邊界與行的主起始位置的邊界對齊,同時最后一個元素的邊界與行的主結(jié)束位置的邊距對齊,而剩余的伸縮盒項目則平均分布,并確保兩兩之間的空白空間相等。

  • space-around:彈性盒子元素會平均地分布在行里,兩端保留子元素與子元素之間間距大小的一半。如果最左邊的剩余空間是負(fù)數(shù),或該行只有一個伸縮盒項目,則該值等效于'center'。在其它情況下,伸縮盒項目則平均分布,并確保兩兩之間的空白空間相等,同時第一個元素前的空間以及最后一個元素后的空間為其他空白空間的一半。

Justify-ContentDemo

align-items (適用于父類容器上)

定義:設(shè)置或檢索彈性盒子元素在側(cè)軸(縱軸)方向上的對齊方式。
align-items: flex-start | flex-end | center | baseline | stretch

  • flex-start 彈性盒子元素的側(cè)軸(縱軸)起始位置的邊界緊靠該行的側(cè)軸(縱軸)起始邊界

  • flex-end 彈性盒子元素的側(cè)軸 結(jié)束為止的邊界緊靠住父容器的側(cè)軸結(jié)束邊界

  • center:彈性盒子元素在該行的側(cè)軸上居中位置(如果該行的尺寸小于彈性盒子元素的尺寸,則會向兩個方向溢出相同的長度)。

  • baseline:如彈性盒子元素的行內(nèi)軸與側(cè)軸為同一條,則該值與"flex-start"等效。其他情況下該值講參與基線對齊

  • stretch:如果指定側(cè)軸大小的屬性值為'auto',則其值會使項目的邊距盒的尺寸盡可能接近所在行的尺寸,但同時會遵照'min/max-width/height'屬性的限制。

    Align-Items Demo

align-content (適用于父類容器上)

定義:設(shè)置或檢索彈性盒堆疊伸縮行的對齊方式
align-content: flex-start | flex-end | center | space-between | space-around | stretch

  • flex-start:各行向彈性盒容器的起始位置堆疊。 彈性盒容器中第一行的側(cè)軸起始邊界緊靠住該彈性盒容器的側(cè)軸起始邊界,之后的每一行都緊靠住前面一行。

  • flex-end:各行向彈性盒容器的結(jié)束位置堆疊。 彈性盒容器中最后一行的側(cè)軸起結(jié)束界緊靠住該彈性盒容器的側(cè)軸結(jié)束邊界,之后的每一行都緊靠住前面一行。

  • center:各行向彈性盒容器的中間位置堆疊。各行兩兩緊靠住同時在彈性盒容器中居中對齊, 保持彈性盒容器的側(cè)軸起始內(nèi)容邊界和第一行之間的距離與該容器的側(cè)軸結(jié)束內(nèi)容邊界與第最后一行之間的距離相等。

  • space-around:各行在彈性盒容器中平均分布,兩端保留子元素與子元素之間間距大小的一半。 如果剩余的空間是負(fù)數(shù)或彈性盒容器中只有一行,該值等效于'center'。在其它情況下,各行會按一定方式在彈性盒容器中排列,以保持兩兩之間的空間相等, 同時第一行前面及最后一行后面的空間是其他空間的一半。

  • stretch:各行將會伸展以占用剩余的空間。如果剩余的空間是負(fù)數(shù),該值等效于'flex-start'。在其它情況下,剩余空間被所有行平分,以擴大它們的側(cè)軸尺寸

Align-Content Demo

參考文章:
flexbox-CSS3彈性盒模型flexbox布局完整版教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,763評論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,238評論 3 428
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,823評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,604評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,339評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,713評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,712評論 3 445
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,893評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,448評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,201評論 3 357
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,397評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,944評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,631評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,033評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,321評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,128評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,347評論 2 377

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

  • H5移動端知識點總結(jié) 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,597評論 0 26
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,779評論 1 92
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,503評論 0 6
  • 事實上它是一種新類型的盒子模型,也有書上稱作彈性伸縮盒布局。比較新的布局方式:旨在提供一個更加有效的方式來布置,對...
    zh_yang閱讀 11,371評論 3 14
  • flex-direction (適用于父類容器的元素上) 設(shè)置或檢索伸縮盒對象的子元素在父容器中的位置。 語法 f...
    lijaha閱讀 448評論 0 1