flex:1;詳解

原文地址:https://segmentfault.com/q/1010000004080910/a-1020000004121373

僅供參考淑掌!

首先明確一點(diǎn)是躏敢, flex 是 flex-grow埃难、flex-shrink莱预、flex-basis的縮寫军熏。故其取值可以考慮以下情況:

flex 的默認(rèn)值是以上三個(gè)屬性值的組合度硝。假設(shè)以上三個(gè)屬性同樣取默認(rèn)值,則 flex 的默認(rèn)值是 0 1 auto上炎。同理恃逻,如下是等同的:

.item {flex: 2333 3222 234px;}
.item {
flex-grow: 2333;
flex-shrink: 3222;
flex-basis: 234px;
}
當(dāng) flex 取值為 none雏搂,則計(jì)算值為 0 0 auto,如下是等同的:

.item {flex: none;}
.item {
flex-grow: 0;
flex-shrink: 0;
flex-basis: auto;
}
當(dāng) flex 取值為 auto寇损,則計(jì)算值為 1 1 auto凸郑,如下是等同的:

.item {flex: auto;}
.item {
flex-grow: 1;
flex-shrink: 1;
flex-basis: auto;
}
當(dāng) flex 取值為一個(gè)非負(fù)數(shù)字,則該數(shù)字為 flex-grow 值矛市,flex-shrink 取 1芙沥,flex-basis 取 0%,如下是等同的:

.item {flex: 1;}
.item {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0%;
}
當(dāng) flex 取值為一個(gè)長(zhǎng)度或百分比浊吏,則視為 flex-basis 值而昨,flex-grow 取 1,flex-shrink 取 1找田,有如下等同情況(注意 0% 是一個(gè)百分比而不是一個(gè)非負(fù)數(shù)字):

.item-1 {flex: 0%;}
.item-1 {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0%;
}
.item-2 {flex: 24px;}
.item-1 {
flex-grow: 1;
flex-shrink: 1;
flex-basis: 24px;
}
當(dāng) flex 取值為兩個(gè)非負(fù)數(shù)字歌憨,則分別視為 flex-grow 和 flex-shrink 的值,flex-basis 取 0%墩衙,如下是等同的:

.item {flex: 2 3;}
.item {
flex-grow: 2;
flex-shrink: 3;
flex-basis: 0%;
}
當(dāng) flex 取值為一個(gè)非負(fù)數(shù)字和一個(gè)長(zhǎng)度或百分比务嫡,則分別視為 flex-grow 和 flex-basis 的值,flex-shrink 取 1漆改,如下是等同的:

.item {flex: 2333 3222px;}
.item {
flex-grow: 2333;
flex-shrink: 1;
flex-basis: 3222px;
}
flex-basis 規(guī)定的是子元素的基準(zhǔn)值心铃。所以是否溢出的計(jì)算與此屬性息息相關(guān)。flex-basis 規(guī)定的范圍取決于 box-sizing籽懦。這里主要討論以下 flex-basis 的取值情況:

auto:首先檢索該子元素的主尺寸于个,如果主尺寸不為 auto,則使用值采取主尺寸之值暮顺;如果也是 auto,則使用值為 content秀存。

content:指根據(jù)該子元素的內(nèi)容自動(dòng)布局捶码。有的用戶代理沒有實(shí)現(xiàn)取 content 值,等效的替代方案是 flex-basis 和主尺寸都取 auto或链。

百分比:根據(jù)其包含塊(即伸縮父容器)的主尺寸計(jì)算惫恼。如果包含塊的主尺寸未定義(即父容器的主尺寸取決于子元素),則計(jì)算結(jié)果和設(shè)為 auto 一樣澳盐。

舉一個(gè)不同的值之間的區(qū)別:

<div class="parent">
<div class="item-1"></div>
<div class="item-2"></div>
<div class="item-3"></div>
</div>

<style type="text/css">
.parent {
display: flex;
width: 600px;
}
.parent > div {
height: 100px;
}
.item-1 {
width: 140px;
flex: 2 1 0%;
background: blue;
}
.item-2 {
width: 100px;
flex: 2 1 auto;
background: darkblue;
}
.item-3 {
flex: 1 1 200px;
background: lightblue;
}
</style>
主軸上父容器總尺寸為 600px

子元素的總基準(zhǔn)值是:0% + auto + 200px = 300px祈纯,其中

  • 0% 即 0 寬度
  • auto 對(duì)應(yīng)取主尺寸即 100px
    故剩余空間為 600px - 300px = 300px

伸縮放大系數(shù)之和為: 2 + 2 + 1 = 5

剩余空間分配如下:

  • item-1 和 item-2 各分配 2/5,各得 120px

  • item-3 分配 1/5叼耙,得 60px
    各項(xiàng)目最終寬度為:

  • item-1 = 0% + 120px = 120px

  • item-2 = auto + 120px = 220px

  • item-3 = 200px + 60px = 260px
    當(dāng) item-1 基準(zhǔn)值取 0% 的時(shí)候腕窥,是把該項(xiàng)目視為零尺寸的,故即便聲明其尺寸為 140px筛婉,也并沒有什么用簇爆,形同虛設(shè)

而 item-2 基準(zhǔn)值取 auto 的時(shí)候,根據(jù)規(guī)則基準(zhǔn)值使用值是主尺寸值即 100px,故這 100px 不會(huì)納入剩余空間

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末入蛆,一起剝皮案震驚了整個(gè)濱河市响蓉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哨毁,老刑警劉巖枫甲,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異扼褪,居然都是意外死亡想幻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門迎捺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來举畸,“玉大人,你說我怎么就攤上這事凳枝〕冢” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵岖瑰,是天一觀的道長(zhǎng)叛买。 經(jīng)常有香客問我,道長(zhǎng)蹋订,這世上最難降的妖魔是什么率挣? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮露戒,結(jié)果婚禮上椒功,老公的妹妹穿的比我還像新娘。我一直安慰自己智什,他們只是感情好动漾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荠锭,像睡著了一般旱眯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上证九,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天删豺,我揣著相機(jī)與錄音,去河邊找鬼愧怜。 笑死呀页,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叫搁。 我是一名探鬼主播赔桌,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼供炎,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了疾党?” 一聲冷哼從身側(cè)響起音诫,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雪位,沒想到半個(gè)月后竭钝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雹洗,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年香罐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片时肿。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庇茫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出螃成,到底是詐尸還是另有隱情旦签,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布寸宏,位于F島的核電站宁炫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏氮凝。R本人自食惡果不足惜羔巢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罩阵。 院中可真熱鬧竿秆,春花似錦、人聲如沸稿壁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽常摧。三九已至,卻和暖如春威创,著一層夾襖步出監(jiān)牢的瞬間落午,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工肚豺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留溃斋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓吸申,卻偏偏與公主長(zhǎng)得像梗劫,于是被迫代替她去往敵國和親享甸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • 首先明確一點(diǎn)是梳侨, flex 是 flex-grow蛉威、flex-shrink、flex-basis的縮寫走哺。故其取值可...
    指尖的跳動(dòng)閱讀 332評(píng)論 0 0
  • 前言 FlexBox是css3的一種新的布局方式蚯嫌,天生為解決布局問題而存在的它,比起傳統(tǒng)的布局方式丙躏,我們使用Fle...
    zevei閱讀 1,420評(píng)論 23 3
  • H5移動(dòng)端知識(shí)點(diǎn)總結(jié) 閱讀目錄 移動(dòng)開發(fā)基本知識(shí)點(diǎn) calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,486評(píng)論 0 26
  • 移動(dòng)開發(fā)基本知識(shí)點(diǎn) 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,466評(píng)論 0 6
  • (一)Flexibility Flex伸縮布局決定性的特性是讓伸縮項(xiàng)目可伸縮择示,也就是讓伸縮項(xiàng)目的寬度或高度自動(dòng)填充...
    虹貓1992閱讀 2,187評(píng)論 0 2