Flexbox解析

您使用 flexbox嗎?上周我在 twitter 上薄嫡,問了這個問題氧急,很驚訝地發(fā)現(xiàn),不少于 50%的人回答是毫深。之所以感到驚訝是因為吩坝,直到最近,我并不在我的任何項目中使用 flexbox 哑蔫,我想我一定是唯一的一個钉寝。
我不使用 flexbox 有幾個原因弧呐。但是,經(jīng)過一些調(diào)查研究之后嵌纲,我的擔憂得到明顯的減弱俘枫,我已經(jīng)開始了轉(zhuǎn)變。所以這里有你應當開始使用Flexbox的六個理由疹瘦。
所有主流瀏覽器均支持
我還沒有使用Flexbox的主要原因是我認為缺乏瀏覽器的支持崩哩。但事實上巡球,F(xiàn)lexbox以95.89%的比率在全球瀏覽器得到了很好的支持言沐。如果你不考慮IE 10及以下的版本,Microsoft表示現(xiàn)在可以這樣認為酣栈,這個數(shù)字甚至可以更高险胰。

Flexbox相比其他功能具有更高的支持性,例如我現(xiàn)在仍然使用的2D transforms(支持率為91.85%)矿筝,或者position:fixed(支持率為92.98%).
不必擔心語法
雖然所有瀏覽器的最新版本均支持Flexbox目前的語法起便,那老版本的支持如何呢?因為語法的改變已經(jīng)半年多了窖维,在書寫方面存在一些不一致的地方榆综。為了支持所有瀏覽器目前最后的兩個版本,我們將不得不使用不同供應商前綴铸史,每條規(guī)則至少書寫4個不同的版本鼻疮。
關于這個問題,我的解決方案是只需使用autoprefixer琳轿。跟蹤最好使用哪個供應商前綴判沟,不應該占用我們的時間和精力,所以我們應該將其設置為自動化崭篡。
使用 autoprefixer
挪哄,我們可以指定我們想要支持的瀏覽器版本,然后他就會自動添加相應的供應商前綴琉闪。

/* Write this */
.flex-container {
  display: flex;
}

/* Compiles to this (with autoprefixer set to support last 2 versions of all browsers) */
.flex-container {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}

簡單的開始
誠然迹炼,學習所有flexbox 相關的知識并不是那么簡單。它有12個新屬性颠毙,其中每個大約有 4個潛在值疗涉。當然你可以一點一點的去理解掌握。
但是你并不需要去了解所有的屬性吟秩。因為在很多情況下咱扣,我發(fā)現(xiàn)自己只需要使用 3 個屬性-
display
:將元素設置為內(nèi)聯(lián)或者塊flexbox容器元素
justify-content
: 控制 flex
容器內(nèi)項的水平對齊方式 (如果 flex
的默認屬性為 row
或 row-reverse
)
align-items
: 控制 flex
容器內(nèi)項的垂直對齊方式 (如果 flex
的默認屬性為 row
或 row-reverse
)

使用這些僅適用于 flex
容器的屬性,我們可以產(chǎn)生大量不同的布局涵防。如果你想要了解更多相關知識闹伪,還有豐富的資源/屬性列表/幫助你學習的例子
Flexbox中文教程
Flexbox Playground:一個在線文檔沪铭,你可以驗證每個屬性-值對的作用
Flexbox 完全指南(CSS 技巧): 所有 flexbox 概述
Flexbox Froggy: 學習 CSS flexbox 的游戲
Flexbugs: flexbox 問題的列表以及解決他們跨瀏覽器問題的方法
Flexibility:支持舊版瀏覽器的一個polyfill

元素居中
除了 flexbox 良好的瀏覽器支持,我們還可以很輕松的實現(xiàn)元素在水平垂直居中問題偏瓤。
僅僅需要3個聲明杀怠,我們就可以實現(xiàn)子元素完全居中:
.flex-container {
display: flex;
justify-content: center; /* horizontal centering /
align-items: center; /
vertical centering */

  border: 2px dashed #000;
}

水平垂直居中

更容易地操作內(nèi)聯(lián)元素
關于內(nèi)聯(lián)項定位問題就是臭名昭著的額外的4個像素的外邊距。雖然存在解決這個問題的方法厅克,如浮動元素赔退,但隨時就會出現(xiàn)新的問題。
使用Flexbox证舟,我們就可以毫不費力地處理內(nèi)聯(lián)元素硕旗。我們可以實現(xiàn)元素的兩端對齊對齊:

.flex-container { display: flex; }
.flex-item { width: 20%; }

兩端對齊

我們可以實現(xiàn)項與項之間的均勻分布

.flex-container {
  display: flex;
  justify-content: space-around;
}
項與項之間的均勻分布

我們甚至可以在不處理:first-child
或:last-child
的情況下,實現(xiàn)列表項的均勻分布:

   .flex-container {
  display: flex;
  justify-content: space-between;
}
列表項的均勻分布

簡化了復雜性
究其Flexbox的創(chuàng)建原因女责,首先可能是因為這個原因漆枚,讓我們實現(xiàn)在盡可能少的聲明中創(chuàng)建復雜的布局。
在前面的例子中抵知,我僅僅通過設置flex
容器樣式來實現(xiàn)墙基。然而,我們可以通過設置 flex
項來實現(xiàn)更加精細的樣式調(diào)節(jié)刷喜。例如残制,定價表的通用布局:


簡化了復雜性

這里有三個 div
,中間div
的寬度是兩邊的兩倍掖疮。為了使用flexbox實現(xiàn)這種布局初茶,我們可以這樣書寫。

.flex-container {
  display: flex;
  align-items: center;
}

.flex-items:not(:nth-child(2)) {
  flex-grow: 1;
  height: 300px;
}

.flex-items:nth-child(2) {
  flex-grow: 2;
  height: 350px;
}

關于Felxbox,我的意識已經(jīng)很晚了,但是我仍然相信還有許多人的思想沒有改變惶岭。您已經(jīng)使用 flexbox 了嗎?如果沒有撕捍,您是不是已經(jīng)被信服,要試一試呢?
本文根據(jù)@ireaderinokun的《6 Reasons to Start Using Flexbox》所譯,整個譯文帶有我們自己的理解與思想,如果譯得不好或有不對之處還請同行朋友指點。如需轉(zhuǎn)載此譯文字支,需注明英文出處:http://bitsofco.de/6-reasons-to-start-using-flexbox/
如需轉(zhuǎn)載奸忽,煩請注明出處:http://www.w3cplus.com/css3/6-reasons-to-start-using-flexbox.html
Web最新資訊堕伪,請關注微信公眾號“一起玩前端”或掃描二維碼關注。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末栗菜,一起剝皮案震驚了整個濱河市欠雌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疙筹,老刑警劉巖富俄,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禁炒,死亡現(xiàn)場離奇詭異,居然都是意外死亡霍比,警方通過查閱死者的電腦和手機幕袱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悠瞬,“玉大人们豌,你說我怎么就攤上這事∏匙保” “怎么了望迎?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長狂打。 經(jīng)常有香客問我擂煞,道長混弥,這世上最難降的妖魔是什么趴乡? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮蝗拿,結果婚禮上晾捏,老公的妹妹穿的比我還像新娘。我一直安慰自己哀托,他們只是感情好惦辛,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仓手,像睡著了一般胖齐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嗽冒,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天呀伙,我揣著相機與錄音,去河邊找鬼添坊。 笑死剿另,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的贬蛙。 我是一名探鬼主播雨女,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼阳准!你這毒婦竟也來了氛堕?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤野蝇,失蹤者是張志新(化名)和其女友劉穎讼稚,沒想到半個月后位喂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡乱灵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年塑崖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痛倚。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡规婆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蝉稳,到底是詐尸還是另有隱情抒蚜,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布耘戚,位于F島的核電站嗡髓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏收津。R本人自食惡果不足惜饿这,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撞秋。 院中可真熱鬧长捧,春花似錦、人聲如沸吻贿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舅列。三九已至肌割,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間帐要,已是汗流浹背把敞。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宠叼,地道東北人先巴。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像冒冬,于是被迫代替她去往敵國和親伸蚯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案简烤? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,754評論 1 92
  • H5移動端知識點總結 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,505評論 0 26
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color剂邮,font,text-align横侦,li...
    wzhiq896閱讀 1,754評論 0 2
  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color挥萌,font绰姻,text-align,li...
    love2013閱讀 2,315評論 0 11
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,472評論 0 6