CSS 彈性盒子模型 Flex 簡介

CSS 彈性盒子模型已經(jīng)提出很久了,但是由于兼容相關(guān)的原因嗤攻,一直沒有大規(guī)模采用判帮,隨著技術(shù)的發(fā)展大量的瀏覽器已經(jīng)可以支持 Flex 屬性了,這篇文章將會(huì)簡單講述和CSS 彈性盒子模型的相關(guān)內(nèi)容仇穗。

彈性盒子簡介

個(gè)人認(rèn)為,彈性布局模型就是根據(jù)所處的設(shè)備戚绕,視圖大小纹坐,進(jìn)行自動(dòng)的寬高改變的的一個(gè)具有更強(qiáng)的空間可塑能力的模型。

由于現(xiàn)代智能設(shè)備的種類繁多舞丛,不同的設(shè)備間展示都存在一定的差距耘子,只依靠浮動(dòng)布局已經(jīng)不能特別好的滿足展示所需要的功能效果。

彈性盒子模型的出現(xiàn)便是為了解決這一痛點(diǎn)球切。當(dāng)下由于低端瀏覽器的使用率依然很高谷誓,導(dǎo)致彈性布局無法大量的普及,主流的CSS布局框架依然采用的浮動(dòng)布局吨凑。然而我相信彈性布局終將會(huì)成為未來的主流布局方案捍歪。

彈性容器相關(guān)概念

image

(圖片來自MDN)

彈性容器(flex container)

包含著彈性項(xiàng)目的父元素户辱。通過設(shè)置 display 屬性的值為 flex 或 inline-flex 來定義彈性容器。

彈性項(xiàng)目(flex item)

彈性容器的每個(gè)子元素都稱為彈性項(xiàng)目糙臼。彈性容器直接包含的文本將被包覆成匿名彈性單元庐镐。

**軸(axis)

每個(gè)彈性框布局包含兩個(gè)軸。彈性項(xiàng)目沿其依次排列的那根軸稱為主軸(main axis)变逃。垂直于主軸的那根軸稱為側(cè)軸(cross axis)必逆。

彈性盒子使用方法

彈性盒子模型主要有兩個(gè)東西 彈性容器(flex-container) 和 彈性項(xiàng)目(flex-item)±柯遥看名字都知道是什么意思了名眉。

簡單的實(shí)現(xiàn)

要讓一元素成為一個(gè)彈性容器,我們需要設(shè)置它的 displayflex凰棉,這樣才能使這個(gè)元素成為一個(gè)彈性容器损拢,這樣下面的元素才能成為彈性項(xiàng)目。


<style>
    .container{
        display: flex;
        height: 100%;
        width: 100%;
    }

    .item{
        flex: 1;
        text-align:center;
        font-size: 50px;
        border:1px solid red;
    }

</style>

<div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
</div> 

image

DEMO1

這樣就實(shí)現(xiàn)了一個(gè)最簡單的彈性布局撒犀。下面我們來詳細(xì)的看一下和彈性布局有關(guān)的CSS屬性

彈性容器相關(guān)屬性

彈性容器的相關(guān)屬性有:align-content福压、align-itemsjustify-content绘证、flex-direction隧膏、flex-wrapflex-flow

這些屬性主要是用于規(guī)定彈性項(xiàng)目的排序展示方式嚷那。

align-content

align-content 屬性定義了當(dāng)作為一個(gè)彈性盒子容器的屬性時(shí)胞枕,瀏覽器如何在容器的側(cè)軸圍繞彈性盒子項(xiàng)目分配剩余空間。

屬性值 描述
flex-start 所有行緊靠開始點(diǎn)
flex-end 所有行緊靠結(jié)束點(diǎn)
center 所有行居中緊帖
space-between 行與行之間平均留空
space-around 行與行之間和行與四周平均留空

可以在 DEMO2 試一試改變屬性值的效果

在MDN中還描述了一些別的屬性但是大部分都是沒有支持的魏宽。

align-items

align-items 屬性就比較容易理解了腐泻,它控制的元素在側(cè)軸上的對齊方式。

屬性值 描述
flex-start 元素向側(cè)軸起點(diǎn)對齊
flex-end 元素向側(cè)軸終點(diǎn)對齊
center 元素在側(cè)軸居中队询。如果元素在側(cè)軸上的高度高于其容器派桩,那么在兩個(gè)方向上溢出距離相同。

可以在 DEMO3 試一試改變屬性值的效果

justify-content

justify-content 屬性與 align-items 屬性對應(yīng)蚌斩。它控制的元素在主軸上的對齊方式铆惑。

屬性值 描述
flex-start 所有行緊靠開始點(diǎn)
flex-end 所有行緊靠結(jié)束點(diǎn)
center 所有行居中緊帖
space-between 行與行之間平均留空
space-around 行與行之間和行與四周平均留空

可以在 DEMO4 試一試改變屬性值的效果

flex-direction

flex-direction 屬性是控制彈性盒子容器內(nèi)彈性項(xiàng)目的分布方向(橫向、豎向)送膳。

屬性值 描述
row 橫向排列
row-reverse 橫向反向排列
column 豎向排列
column-reverse 豎向反向排列

可以在 DEMO5 試一試改變屬性值的效果

flex-wrap

flex-wrap 屬性規(guī)定flex元素是否可以多行顯示员魏。

屬性值 描述
nowrap flex 的元素被擺放到到一行,這可能導(dǎo)致溢出 flex 容器
wrap flex 元素被打斷到多個(gè)行中叠聋。
wrap-reverse 和 wrap 的行為一樣撕阎,但是打斷后行的排列方向是反的

可以在 DEMO5 試一試改變屬性值的效果

flex-flow

flex-wrap 屬性是 flex-directionflex-flow 的簡寫屬性

syntax: <'flex-direction'> || <'flex-wrap'>


以上就是彈性容器的CSS屬性了,主要就是對內(nèi)部彈性項(xiàng)目的排列展示順序的控制碌补。

彈性項(xiàng)目相關(guān)屬性

彈性項(xiàng)目的相關(guān)屬性有:flex-grow虏束、flex-shrink棉饶、flex-basisflex镇匀。

它們都主要是負(fù)責(zé)控制彈性項(xiàng)目的大小照藻。

flex-grow

flex-grow 這個(gè)屬性控制的彈性項(xiàng)目的拉伸因子,當(dāng)所處行存在空白的時(shí)候會(huì)根據(jù)該行的元素的拉伸因子分配多余的空間坑律。默認(rèn)值為0岩梳,即不會(huì)自動(dòng)擴(kuò)展囊骤。

flex-shrink

flex-shrink 這個(gè)屬性與 flex-grow 相反是收縮因子晃择。默認(rèn)值為1,即會(huì)自動(dòng)收縮也物。

flex-basis

flex-basis 屬性指定了 flex 元素在主軸方向上的初始大小宫屠。如果不設(shè)置一般會(huì)讀取 width;

flex

這個(gè)屬性就是上面三個(gè)屬性的集合體。

order

order 屬性可以更改元素出現(xiàn)的順序滑蚯,即會(huì)優(yōu)先根據(jù)設(shè)置的order來排序浪蹂。默認(rèn)為0;


這些屬性可以在DEMO6中試一試~~

小提示

  1. 通過設(shè)置彈性項(xiàng)目的 widthheightminmax可以限制自動(dòng)伸縮的極限哦~~

  2. 當(dāng) flex-warp 設(shè)置為 warp 后,如果有基礎(chǔ)寬度那么自動(dòng)收縮將失效告材,當(dāng)達(dá)到基礎(chǔ)寬度會(huì)切換到下一行坤次,除非只剩一個(gè)了。

參考資料

MDN_Flex

icanuse_flex

END

2017-7-30 立項(xiàng)

2017-7-28 立項(xiàng)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斥赋,一起剝皮案震驚了整個(gè)濱河市缰猴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疤剑,老刑警劉巖滑绒,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異隘膘,居然都是意外死亡疑故,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門弯菊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纵势,“玉大人,你說我怎么就攤上這事管钳∏仗” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵蹋嵌,是天一觀的道長育瓜。 經(jīng)常有香客問我,道長栽烂,這世上最難降的妖魔是什么躏仇? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任恋脚,我火速辦了婚禮,結(jié)果婚禮上焰手,老公的妹妹穿的比我還像新娘糟描。我一直安慰自己,他們只是感情好书妻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布船响。 她就那樣靜靜地躺著,像睡著了一般躲履。 火紅的嫁衣襯著肌膚如雪见间。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天工猜,我揣著相機(jī)與錄音米诉,去河邊找鬼。 笑死篷帅,一個(gè)胖子當(dāng)著我的面吹牛史侣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播魏身,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惊橱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了箭昵?” 一聲冷哼從身側(cè)響起税朴,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宙枷,沒想到半個(gè)月后掉房,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慰丛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年卓囚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诅病。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哪亿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贤笆,到底是詐尸還是另有隱情蝇棉,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布芥永,位于F島的核電站篡殷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏埋涧。R本人自食惡果不足惜板辽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一奇瘦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劲弦,春花似錦耳标、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至画畅,卻和暖如春砸琅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夜赵。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工明棍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乡革,地道東北人寇僧。 一個(gè)月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像沸版,于是被迫代替她去往敵國和親嘁傀。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案视粮? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,748評論 1 92
  • 移動(dòng)開發(fā)基本知識點(diǎn) 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,466評論 0 6
  • H5移動(dòng)端知識點(diǎn)總結(jié) 閱讀目錄 移動(dòng)開發(fā)基本知識點(diǎn) calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,489評論 0 26
  • CSS3 彈性盒子(Flex Box) 彈性盒子是 CSS3 的一種新的布局模式细办。CSS3 彈性盒( Flexib...
    hx永恒之戀閱讀 1,243評論 1 9
  • 事實(shí)上它是一種新類型的盒子模型,也有書上稱作彈性伸縮盒布局蕾殴。比較新的布局方式:旨在提供一個(gè)更加有效的方式來布置笑撞,對...
    zh_yang閱讀 11,339評論 3 14