Flexbox

本文演示 demo 地址 flexbox-demo

簡介

  • Flexbox(Flexible Box)彈性盒顽照,彈性盒為 CSS 增加了一種新的布局方式 — 彈性布局精刷。
  • 由于桌面瀏覽器對 Flexbox 的支持還未得到普及谎亩,因此它還未成為桌面端頁面的主流布局方式荞怒。而在移動端粪般,當瀏覽器的兼容已不是最大的問題時有决,我們就可以使用 Flexbox 布局了。
  • Flexbox 對于移動端有著特別的意義空盼。在傳統(tǒng)的定位方式中有很多float屬性书幕,這些浮動對于移動端來說就是對渲染性能的消耗。而在 Flexbox 中揽趾,浮動成為了歷史台汇,這變相提升了移動端的性能。此外開發(fā)者也不必再去計算那些讓人煩惱的 margin篱瞎、padding苟呐、width 和 height,可以把這一切都交給 Flexbox, 由它來選擇最佳的空間利用方式俐筋。

基礎知識

  • 彈性容器
    任何 HTML 元素都可以作為彈性容器牵素。
  • 彈性項目
    直接嵌套在彈性容器里的標簽叫彈性項目。彈性容器的每個直接子代都會自動變成彈性項目校哎。

彈性容器相關的屬性

display
/* 把元素設成彈性容器 */
display: flex
flex-flow
  1. 默認情況下两波,彈性項目并排顯示成一行瞳步。而且瀏覽器只在一行里顯示各個彈性項目闷哆,不會換行。
  2. flex-flow 屬性是另外兩個彈性盒相關的 CSS 屬性的簡寫形式:flex-direction 和 flex-wrap单起。
  3. flex-flow 屬性既能控制彈性項目的排列方向抱怔,也能控制是否換行。這個屬性之間用兩個值嘀倒,之間用空格分隔屈留。第一個指明方向,第二個值指明是否換行测蘑。
  • 第一個參數(shù):控制方向
    • row:各個彈性項目并排顯示(默認設置)
    • row-reverse
    • column:各個彈性項目縱向疊放
    • column-reverse
  • 第二個參數(shù):控制是否換行
    • nowrap:常規(guī)行為
    • wrap
    • wrap-reverse
.container {
    display: flex;
    flex-flow: column-reverse nowrap;
}
justify-content
  • justify-content 屬性告訴瀏覽器把彈性項目顯示在一行里的什么位置灌危。只有為彈性項目設置了寬度,而且各個項目的寬度之和小于彈性容器的寬度時碳胳,這個屬性才起作用勇蝙。
  • 如果寬度是彈性的,justify-content 屬性完全沒有效果挨约。
  • 這個屬性有五個可選值:
    1. flex-start:項目在一行里靠左對齊味混。如果把方向設為 row-reverse,則會靠右對齊各個項目诫惭。
    2. flex-end:項目在一行里靠右對齊翁锡。如果把方向設為 row-reverse,則會靠左對齊各個項目夕土。
    3. center:彈性項目居中顯示在容器中間馆衔。
    4. space-between:均布各個項目,項目之間的空間大小相同,兩邊項目貼近容器邊緣哈踱。
    5. space-around:把容器里剩余的控件平均分給各個項目荒适,包括最左邊和最右邊的項目。
align-items
  • align-items 屬性決定高度不同的彈性項目在彈性容器里的縱向對齊方式开镣。默認情況下刀诬,彈性項目會拉伸,因此高度都相同邪财。
  • 如果容器的方向是 column俏竞,align-items 屬性用于控制寬度不同縱排彈性項目在彈性容器里的橫向對齊方式玷犹。
  • 這個屬性有五個可選值:
    1. flex-start:把各個彈性項目的頂邊與容器的頂邊對齊。
    2. flex-end:把各個彈性項目的底邊與容器的底邊對齊。
    3. center:把各個彈性項目的縱向中心線與容器的縱向中心線對齊中鼠。
    4. baseline:把各個彈性項目里第一個元素的基線對齊。
    5. stretch:拉伸容器里的各個項目姨丈,使各個項目的高度相同(常規(guī)行為)岸蜗。
align-content
  • 這個屬性告訴瀏覽器如何放置顯示為多行的彈性項目
  • 只有滿足兩個條件,align-content 屬性才會起作用:
    1. 彈性容器必須允許換行绊袋。
    2. 彈性容器的高度必須大于多行顯示的彈性項目毕匀。
  • 這個屬性有六個可選值:
    1. flex-start:把各行彈性容器放在彈性容器的頂部。
    2. flex-end:把各行彈性容器放在彈性容器的底部癌别。
    3. center:把各行整體的縱向中心線與容器的縱向中心線對齊皂岔。
    4. space-between:把縱向額外的空間平均分布在各行之間,上下兩行貼近容器邊緣展姐。
    5. space-around:把縱向額外的空間平均分布在各行之間躁垛,包括上下兩行。
    6. stretch:拉伸容器里的各個項目圾笨,讓一行里的項目高度相同教馆。如果項目里的內容不一樣多,可行的高度不相同(常規(guī)行為)擂达。

彈性項目相關的屬性

order
  • order 屬性用于為彈性項目設置數(shù)值土铺,指明項目在行(或列)里的位置
  • order 屬性的數(shù)值與 z-index 屬性的數(shù)值作用類似,因此不必要使用連續(xù)的數(shù)字谍婉。
  • 有時可能只想把一列移動到最左邊或最右邊舒憾。此時只需為想移動的項目設置 order 屬性,其他項目都別設置穗熬。設為 -1镀迂,項目會被移到彈性容器的左邊;設為1唤蔗,項目會移到最右邊探遵。
align-self
  • 只應用于單個彈性項目窟赏,會覆蓋 align-items 屬性的值。
flex
  • flex 屬性可以彈性設置彈性項目的寬度
  • 默認值:flex: 0 1 auto;
  • flex 屬性有3個參數(shù):
    1. flex-grow(當項目的寬度之和小于容器的寬度時有用)
    2. flex-shrink(當項目的寬度之和大于容器的寬度時有用)
    3. flex-basis(允許彈性容器換行時箱季,flex-basis 屬性值才真正有用)
Tips
  • 對彈性項目來說涯穷,把外邊距設為auto的意思是,讓瀏覽器根據(jù)可用空間自行設置外邊距的大小
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末藏雏,一起剝皮案震驚了整個濱河市拷况,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掘殴,老刑警劉巖赚瘦,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奏寨,居然都是意外死亡起意,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門病瞳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揽咕,“玉大人,你說我怎么就攤上這事套菜∏咨疲” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵笼踩,是天一觀的道長逗爹。 經常有香客問我亡嫌,道長嚎于,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任挟冠,我火速辦了婚禮于购,結果婚禮上,老公的妹妹穿的比我還像新娘知染。我一直安慰自己肋僧,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布控淡。 她就那樣靜靜地躺著嫌吠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掺炭。 梳的紋絲不亂的頭發(fā)上辫诅,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音涧狮,去河邊找鬼炕矮。 笑死么夫,一個胖子當著我的面吹牛,可吹牛的內容都是我干的肤视。 我是一名探鬼主播档痪,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼邢滑!你這毒婦竟也來了腐螟?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤困后,失蹤者是張志新(化名)和其女友劉穎遭垛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體操灿,經...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡锯仪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了趾盐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庶喜。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖救鲤,靈堂內的尸體忽然破棺而出久窟,到底是詐尸還是另有隱情,我是刑警寧澤本缠,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布斥扛,位于F島的核電站,受9級特大地震影響丹锹,放射性物質發(fā)生泄漏稀颁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一楣黍、第九天 我趴在偏房一處隱蔽的房頂上張望匾灶。 院中可真熱鬧,春花似錦租漂、人聲如沸阶女。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秃踩。三九已至,卻和暖如春业筏,著一層夾襖步出監(jiān)牢的瞬間憔杨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工驾孔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芍秆,地道東北人惯疙。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像妖啥,于是被迫代替她去往敵國和親霉颠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內容

  • 簡書的Markdown貌似不支持插入iframe荆虱,所以文章里的JSFiddle示例都改做截圖了蒿偎,如果有需要可以點擊...
    kangflict閱讀 1,119評論 2 8
  • Flexbox布局官方稱之為CSS Flexible Box布局模塊,他是CSS3中的一種新的布局模式。Flexb...
    流動碼文閱讀 700評論 0 3
  • H5移動端知識點總結 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,489評論 0 26
  • title: flex布局date: 2017-07-07 14:13:33tags: css筆記 flexbox...
    Gary23閱讀 1,531評論 0 0
  • Flexbox簡介 Flexbox Layout(Flexible Box)模塊怀读,W3C官方稱為CSS彈性盒子布局...
    _李楊閱讀 426評論 0 2