Flex 初探

傳統(tǒng)的布局方案,基于 display + position + float 屬性實(shí)現(xiàn)舆吮,但是萎津,傳統(tǒng)的布局方案有很多限制,在布局要求越來越多的今天递宅,很多布局需要花費(fèi)很大精力才能實(shí)現(xiàn)娘香。

在這樣的背景下苍狰,F(xiàn)lex 布局在 2009 年橫空出世,它可以輕松地滿足各種各樣的布局需求烘绽,例如垂直居中等淋昭。它是一個(gè)新的盒子模型概念,彈性容器中的子元素可以在任何方向上根據(jù)已有空間進(jìn)行伸縮自適應(yīng)安接,以實(shí)現(xiàn)最佳的填充視覺效果翔忽,并且子元素之間不會(huì)相互重疊。

運(yùn)用 Flexbox 可以很容易實(shí)現(xiàn)垂直居中等盏檐。其更適用于一個(gè) UI 組件內(nèi)的元素布局呈現(xiàn)歇式。

使用 Flex 很簡(jiǎn)單,只需要指定一個(gè)盒子的 display 屬性即可以胡野。

.container {
    display: flex || inline-flex;
}

這個(gè)時(shí)候材失,這個(gè)盒子被叫做“彈性容器”(flex container),盒子里面的子元素叫做“彈性項(xiàng)目”(flex items)硫豆。在這個(gè)容器中龙巨,存在兩條軸線,一條沿著默認(rèn)書寫方向的主軸(main axis)熊响,以及和它垂直的交叉軸(cross axis)旨别, Flex 布局就是在這樣的環(huán)境下實(shí)現(xiàn)的。

書寫模式是一個(gè) W3C 新增的屬性汗茄,可以通過 direction: ltr | rtl; 來設(shè)置秸弛,是文本在頁(yè)面內(nèi)的排列方向,由于語言排列方向的差異洪碳,會(huì)有不同書寫方向的需求递览。默認(rèn)情況下,其是從左到右偶宫,從上到下來書寫的非迹,這種情況下,水平方向就是 flex 項(xiàng)目的主軸方向纯趋,垂直方向就是交叉軸方向憎兽。

容器內(nèi)的子元素叫做 flex 項(xiàng)目(flex items)。下面吵冒,就是 Flex 的一些基本概念纯命。

Flex 基本概念

Flex 的基本屬性并不多,常用的也就四五個(gè)痹栖。下面亿汞,分為容器和項(xiàng)目分別介紹。

容器的主要屬性

彈性容器上主要涉及到的概念有以下幾個(gè):

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

下面一次介紹在書寫方向?yàn)閺淖蟮接揖景ⅲ瑥纳现料虑闆r下各個(gè)屬性值以及其值的表現(xiàn)形式疗我。

flex-direction

定義布局的主軸方向咆畏。

.container {
    flex-direction: row | row-reverse | column | column-reverse
}

各屬性值分別表示水平(從左到右),水平(從右至左)吴裤,垂直(從上到下)旧找,垂直(從下到上)。

flex-wrap

定義當(dāng)彈性項(xiàng)目超出一行時(shí)麦牺,是否換行钮蛛。

.container {
    flex-wrap: wrap | nowrap | wrap-reverse;
}

各個(gè)屬性值分別表示換行,不換行剖膳,向反方向換行(默認(rèn)向上)魏颓。

flex-flow

flex-flowflex-directionflex-wrap 屬性的合寫形式,其默認(rèn)值為:row nowrap,同理可以設(shè)置為 column wrap 等值吱晒。

justify-content

justify-content 用來設(shè)定彈性項(xiàng)目在主軸方向上的對(duì)齊方式甸饱。

.container {
    justify-content: flex-start | flex-end | center | space-between | space-around;
}

align-items

align-items 表示彈性項(xiàng)目在交叉軸方向上的對(duì)齊方式。其屬性值與 jsutify-content 類似枕荞。

.container {
    align-items: flex-start | flex-end | center | baseline | stretch;
}

上面屬性中柜候,設(shè)置為 center 的時(shí)候搞动,很容易實(shí)現(xiàn)垂直居中布局躏精,baseline 表示根據(jù)第一行文字的基線對(duì)齊,stretch 表如果項(xiàng)目沒有設(shè)置高度鹦肿,或者為 auto,則項(xiàng)目在交叉軸方向會(huì)填充滿整個(gè)容器高度矗烛。

align-content

align-content 表示多行項(xiàng)目的對(duì)齊方式,也就是箩溃,在交叉軸上瞭吃,所有的項(xiàng)目是如何排列的。所以其只有在項(xiàng)目不止一行的時(shí)候有效涣旨。

align-content: flex-start | flex-end | center | space-between | space-around | stretch;

彈性項(xiàng)目的主要屬性

以上是 flex 容器所具有的主要屬性歪架。下面是 flex 項(xiàng)目的主要屬性設(shè)置。

  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self
  • order

flex-grow

指的是 flex 項(xiàng)目在空間分配上的拉伸因子霹陡,是一個(gè)默認(rèn)為1的數(shù)字和蚪,flex 項(xiàng)目會(huì)根據(jù)設(shè)置的數(shù)值按比例分配。

flex-shrink

指的是 flex 項(xiàng)目在必要時(shí)的收縮因子烹棉,與上面一個(gè)屬性對(duì)應(yīng)攒霹。所謂必要,指的是空間不足的時(shí)候浆洗,屬性值不能為賦值催束,如果屬性值為 0,則該項(xiàng)目不會(huì)收縮伏社。

flex-basis

指的是 flex 項(xiàng)目在分配空間時(shí)的默認(rèn)大小抠刺, flex 項(xiàng)目在這個(gè)參數(shù)的基礎(chǔ)上進(jìn)行伸縮變化塔淤。當(dāng)該屬性的值為 auto 的時(shí)候,其初始的占空間按照其中的內(nèi)容決定速妖。內(nèi)容越多凯沪,其初始值越大。也可以為其設(shè)置初始的寬高度值买优。

flex

flex 是前面三個(gè)屬性的簡(jiǎn)寫形式妨马。 默認(rèn)值為 1 0 auto.

.item {
    flex: flex-grow flex-shrink flex-basis;
}

這個(gè)屬性有兩個(gè)特殊的值,autonone杀赢, auto 等價(jià)于 1 1 auto, none 等價(jià)于 0 0 auto.

看下面的例子:

article:nth-child(1) {
  flex: 1 200px;
  order: 1; /*flex項(xiàng)的排列順序烘跺,默認(rèn)為0,越大越后脂崔,負(fù)數(shù)為前*/
}
article:nth-child(2) {
  flex: 5 400px;
}
article:nth-child(3) {
  flex: 1 200px;
  order: -1;
}

本例中將整個(gè)空間分成了7分滤淳,第一個(gè)和第三個(gè)子項(xiàng)分別占用七分之一的空間,中間一個(gè)占七分之五砌左。后面的 200px 和 400px 意思是 flex 項(xiàng)目的最小寬度脖咐。

align-self

align-self 是前面 align-items 的特殊呼應(yīng),為一個(gè)或多個(gè)特定的項(xiàng)目設(shè)置在交叉軸上的對(duì)齊方式汇歹,故而屬性值與 align-items 一致屁擅。

.item {
    align-self: flex-start | flex-end | stretch | center | baseline;
}

order

通過設(shè)置 order 屬性來改變 flex 項(xiàng)目的默認(rèn)排列順序,默認(rèn)為 0产弹,可以為負(fù)值派歌,越大越后面,越小越前面痰哨。 order 相等時(shí)胶果,位置由 HTML 元素出現(xiàn)的前后確定。

以上就是 Flex 布局的基本知識(shí)和概念斤斧,一共涉及到 12 個(gè)屬性早抠,但常用的就幾個(gè),多加練習(xí)撬讽,自然很輕松上手蕊连。

下面是一個(gè) flex 布局的基本應(yīng)用示例,運(yùn)用了 flex 的各個(gè)參數(shù)項(xiàng)锐秦。
Example

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咪奖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子酱床,更是在濱河造成了極大的恐慌羊赵,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異昧捷,居然都是意外死亡闲昭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門靡挥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來序矩,“玉大人,你說我怎么就攤上這事跋破◆さ恚” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵毒返,是天一觀的道長(zhǎng)租幕。 經(jīng)常有香客問我,道長(zhǎng)拧簸,這世上最難降的妖魔是什么劲绪? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮盆赤,結(jié)果婚禮上贾富,老公的妹妹穿的比我還像新娘。我一直安慰自己牺六,他們只是感情好颤枪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著兔乞,像睡著了一般汇鞭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上庸追,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音台囱,去河邊找鬼淡溯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛簿训,可吹牛的內(nèi)容都是我干的咱娶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼强品,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼膘侮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起的榛,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤琼了,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雕薪,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昧诱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了所袁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盏档。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖燥爷,靈堂內(nèi)的尸體忽然破棺而出蜈亩,到底是詐尸還是另有隱情,我是刑警寧澤前翎,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布勺拣,位于F島的核電站,受9級(jí)特大地震影響鱼填,放射性物質(zhì)發(fā)生泄漏药有。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一苹丸、第九天 我趴在偏房一處隱蔽的房頂上張望愤惰。 院中可真熱鬧,春花似錦赘理、人聲如沸宦言。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奠旺。三九已至,卻和暖如春施流,著一層夾襖步出監(jiān)牢的瞬間响疚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工瞪醋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留忿晕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓银受,卻偏偏與公主長(zhǎng)得像践盼,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宾巍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

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