Flex 布局

一剥汤、基本概念

  • 理解基本概念

    • Flex 布局(彈性布局),是一種用于在頁(yè)面上布置元素的布局模式排惨,使得當(dāng)頁(yè)面布局必須適應(yīng)不同的屏幕尺寸和不同的顯示設(shè)備時(shí)吭敢,元素可預(yù)測(cè)地運(yùn)行。

    • 相關(guān)詞匯

      圖中是一個(gè) flex-direction 屬性為 row 的彈性容器暮芭,意味著其內(nèi)的彈性項(xiàng)目將根據(jù)既定書寫模式沿主軸水平排列鹿驼,其方向?yàn)樵氐奈谋玖鞣较颍谶@個(gè)例子里辕宏,為從左到右畜晰。

    "flex axis"
    "flex axis"
    1. 彈性容器(Flex container)

      彈性項(xiàng)目的父元素。通過設(shè)置display:flex;或者display:inline-flex;來定義彈性容器瑞筐。

    2. 彈性項(xiàng)目(Flex item)

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

    3. 軸(Axis)

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

    4. 方向(Direction)

      彈性容器的主軸起點(diǎn)(main start)/主軸終點(diǎn)(main end)側(cè)軸起點(diǎn)(cross start)/側(cè)軸終點(diǎn)(cross end)描述了彈性項(xiàng)目排布的起點(diǎn)與終點(diǎn)魔策。它們具體取決于彈性容器的主軸與側(cè)軸中匈子,由 writing-mode 確立的方向(從左到右、從右到左闯袒,等等)虎敦。

    5. 行(Line)

      根據(jù) flex-wrap 屬性游岳,彈性項(xiàng)目可以排布在單個(gè)行或者多個(gè)行中。此屬性控制側(cè)軸的方向和新行排列的方向其徙。

  • 代碼示例

    下述代碼使用了 flex 布局胚迫,使本來在文檔流布局中獨(dú)占一行的塊級(jí)元素 div ,變成了兩個(gè)同處一行之中唾那。

<!--
例一
-->
<style>
    .parent{
      border:solid 1px red;
      display:flex;
      background:#dde
}
    .child{
      border:solid 1px black;
      height:50px;
      width:100px;
      background:#ddd;
      margin:10px;
    }
  </style>
  <div class="parent">
    <div class="child child1"></div>
    <div class="child child2"></div>
  </div>

例一結(jié)果如下:

flex output.PNG
flex output.PNG
  • flex 特點(diǎn)
    1. 塊級(jí)布局側(cè)重垂直方向访锻、行內(nèi)布局側(cè)重水平方向,flex布局是與方向無(wú)關(guān)的闹获。
    2. flex 布局可以實(shí)現(xiàn)空間自動(dòng)分配期犬、自動(dòng)對(duì)齊(flexible:彈性、靈活)避诽。
    3. flex 適用于簡(jiǎn)單的線性布局龟虎, 更復(fù)雜的布局要交到 grid 布局(還沒發(fā)布)。

二沙庐、flex container 的六個(gè)屬性

<!--
例二
為了便于理解鲤妥,用代碼實(shí)踐了這六個(gè)屬性
-->
<style>
  * {
  margin: 0px;
  border:0px;
  padding:0px;
}
.container {
  display: flex;
  border: 1px solid;
  background: red;
}
.items {
  border: 5px solid;
  height:50px;
  width:100px;
  background:white;
}
</style>
<div class="container">
  <div class="items item1">div1</div>
  <div class="items item2">div2</div>
  <div class="items item3">div3</div>
  <div class="items item4">div4</div>
  <div class="items item5">div5</div>
  <div class="items item6">div6</div>
  <div class="items item7">div7</div>
  <div class="items item8">div8</div>
  <div class="items item9">div9</div>
</div>

例二頁(yè)面展示結(jié)果:display:flex

  • flex-direction(方向)

    這個(gè)屬性表明flex布局與方向無(wú)關(guān),它有四個(gè)取值:

    • column

      讓元素一列一列的展示拱雏。源代碼 flex-container 中由上到下排列的元素棉安,在頁(yè)面中展示為從頁(yè)面上方開始往下排列。

      在例二中 .container 加上flex-direction:column之后铸抑,頁(yè)面展示效果如下:flex-direction:column

    • column-reverse

      讓元素一列一列的展示贡耽。源代碼 flex-container 中由上到下排列的元素,在頁(yè)面中展示為從頁(yè)面下方開始往上排列羡滑。

      在例二中 .container 加上flex-direction:column-reverse之后菇爪,頁(yè)面展示效果如下:flex-direction:column-reverse

    • row——默認(rèn)值

      讓元素一行一行的展示。源代碼 flex-container 中由上到下排列的元素柒昏,在頁(yè)面中展示為從頁(yè)面左側(cè)開始往右排列凳宙。

      在例二中 .container 加上flex-direction:row之后,頁(yè)面展示效果如下:flex-direction:row

    • row-reverse

      讓元素一行一行的展示职祷。源代碼 flex-container 中由上到下排列的元素氏涩,在頁(yè)面中展示為從頁(yè)面右側(cè)開始往左排列。

      在例二中 .container 加上flex-direction:row-reverse之后有梆,頁(yè)面展示效果如下:flex-direction:row-reverse

  • flex-wrap(換行)

    讓元素?fù)Q行是尖,默認(rèn)值為不換行 nowrap 。

    在例二中 .container 加上flex-wrap:wrap;之后泥耀,頁(yè)面展示效果如下:flex-wrap:wrap

  • flex-flow(上面兩個(gè)的簡(jiǎn)寫)

    flex-flow:row wrap;
    /*相當(dāng)于下面的css寫法*/
    flex-direction:row;
    flex-wrap:wrap;
    
  • justify-content(主軸方向?qū)R方式)

    flex-container 中 items 主軸的對(duì)齊方式饺汹,主軸的方向即 flex-direction 的方向,它有五種取值:

    • space-between

      主軸方向除去元素內(nèi)容多出來的空間平均分布在兩兩元素之間痰催。

      示例鏈接

    • space-around

      主軸方向除去元素內(nèi)容多出來的空間平均分布在每個(gè)元素主軸方向的前后兜辞。

      示例鏈接

    • flex-start

      將 flex-container 中的元素挪到主軸的起點(diǎn)迎瞧。

      示例鏈接

    • flex-end

      將 flex-container 中的元素挪到主軸的終點(diǎn)。

      示例鏈接

    • center

      將 flex-container 中的元素挪到主軸的中間逸吵。

      示例鏈接

  • align-items(側(cè)軸對(duì)齊方式)

    flex-container 中 items 側(cè)軸的對(duì)齊方式凶硅,側(cè)軸方向即主軸方向的垂直方向,有五種取值:

    • stretch——默認(rèn)值

      表示 flex-container 之中的 items 是可伸展的扫皱,所有的 item 都會(huì)擁有與側(cè)軸方向最長(zhǎng)的 item 同等的長(zhǎng)度足绅。

      示例鏈接

    • flex-start

      將 items 挪到側(cè)軸的起點(diǎn)。

      示例鏈接

    • flex-end

      將 items 挪到側(cè)軸的終點(diǎn)韩脑。

      示例鏈接

    • center

      將 items 挪到側(cè)軸的中間氢妈。

      示例鏈接

    • baseline

      用文字的 baseline 對(duì)齊,比較復(fù)雜段多,用的較少允懂。

      示例鏈接

  • align-content(多行/列內(nèi)容對(duì)齊方式---用的比較少)

三、flex item 的六個(gè)屬性

  • flex-grow ——增長(zhǎng)比例(空間過多時(shí))

    flex-container 的空間減去 items 的空間之后剩余的空間衩匣,用 flex-grow 屬性分配給 item。

    示例鏈接

  • flex-shrink——收縮比例(空間不夠時(shí))

  • flex-basis——默認(rèn)大小(一般不用)

  • flex——上面三個(gè)的縮寫

    .container{
      display:flex
    }
    .items:nth-child(1) {
      flex:1 3 100px;
    }
    /*
    用于表示:如果 container 有剩余空間是將剩余空間全部給 item1, 如果 container 的空間不夠時(shí)將 item1 按3的比例縮小粥航,如果空間剛剛好則設(shè)置 item 在主軸方向的長(zhǎng)度為 100px
    */
    
  • order——順序(代替雙飛翼)

    使用 order 可以自定義的安排 items 的順序 琅捏,使用時(shí)要求每個(gè) item 寫入order,否則不生效递雀。

    示例鏈接

  • align-self——自身的對(duì)齊方式

    使用 align-self 可以自定義某一個(gè) item 的對(duì)齊方式柄延,不然對(duì)齊方式繼承父級(jí)元素的對(duì)齊方式。

    示例鏈接

四缀程、例子

實(shí)現(xiàn)的頁(yè)面為:http://js.jirengu.com/pavux/3/edit?html,output

參考自http://codepen.io/team/css-tricks/pen/jqzNZq/?editors=1100

五搜吧、參考

Flex 布局教程:語(yǔ)法篇

A Complete Guide to Flexbox

A Visual Guide to CSS3 Flexbox Properties

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市杨凑,隨后出現(xiàn)的幾起案子滤奈,更是在濱河造成了極大的恐慌,老刑警劉巖撩满,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜒程,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡伺帘,警方通過查閱死者的電腦和手機(jī)昭躺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伪嫁,“玉大人领炫,你說我怎么就攤上這事≌趴龋” “怎么了帝洪?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵似舵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我碟狞,道長(zhǎng)啄枕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任族沃,我火速辦了婚禮频祝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘脆淹。我一直安慰自己常空,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布盖溺。 她就那樣靜靜地躺著漓糙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烘嘱。 梳的紋絲不亂的頭發(fā)上昆禽,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音蝇庭,去河邊找鬼醉鳖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哮内,可吹牛的內(nèi)容都是我干的盗棵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼北发,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼纹因!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起琳拨,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瞭恰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后狱庇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寄疏,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年僵井,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了陕截。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡批什,死狀恐怖农曲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤乳规,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布形葬,位于F島的核電站,受9級(jí)特大地震影響暮的,放射性物質(zhì)發(fā)生泄漏笙以。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一冻辩、第九天 我趴在偏房一處隱蔽的房頂上張望猖腕。 院中可真熱鬧,春花似錦恨闪、人聲如沸倘感。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)老玛。三九已至,卻和暖如春钧敞,著一層夾襖步出監(jiān)牢的瞬間蜡豹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工溉苛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留余素,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓炊昆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親威根。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凤巨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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

  • 一、Flex布局是什么 Flex是Flexible Box的縮寫洛搀,用來為盒裝模型提供最大的靈活性敢茁。 任何一個(gè)容器都...
    周花花啊閱讀 687評(píng)論 0 9
  • 最近這兩天一直在學(xué)習(xí)關(guān)于移動(dòng)端頁(yè)面,而移動(dòng)端頁(yè)面一般很多用flex(彈性)布局,方便簡(jiǎn)潔,而且沒有什么兼容性的問題...
    YM雨蒙閱讀 469評(píng)論 0 4
  • 網(wǎng)頁(yè)布局(layout)是CSS的一個(gè)重點(diǎn)應(yīng)用。 一留美、Flex布局是什么彰檬? Flex是Flexible Box的縮...
    抱著熊喵啃什么閱讀 633評(píng)論 0 4
  • 原文地址:flex布局語(yǔ)法篇 之前寫過一篇關(guān)于實(shí)現(xiàn)元素居中的博文,我們發(fā)現(xiàn)每種布局要求都可以運(yùn)用flex布局實(shí)現(xiàn)谎砾。...
    薛普定朗諤克閱讀 1,461評(píng)論 0 8
  • 網(wǎng)頁(yè)布局(layout)是CSS的一個(gè)重點(diǎn)應(yīng)用逢倍。 布局的傳統(tǒng)解決方案,基于盒狀模型景图,依賴display屬性 +po...
    老夫的天閱讀 684評(píng)論 2 6