1. 程式人生 > 實用技巧 >CSS3——flex 彈性佈局

CSS3——flex 彈性佈局

為盒子模型提供最大的靈活性

  • 基本使用

    • 任何容器都可使用 flex 佈局

      .box{
          display: flex;
      }
      

      行內元素也能使用 flex 佈局

      display: inline-flex
      

      webkit 核心瀏覽器,必須加上 -webkit 字首

      display: -webkit-flex;
      

      設定 flex 佈局後,子元素的 float、clear 和 vertical-align 屬性將失效

  • 基本概念

    設定了 flex 佈局的元素稱為 flex container(容器),所有子元素稱為 flex ite(專案)

  • 容器屬性

    • flex-direction:決定主軸方向(專案排列順序)

      • row(預設)

      • row-reverse

      • column

      • column-reverse

    • flex - wrap:換行

      預設情況下專案都排在一條線上,如果超出容器,則減少專案寬度,該屬性定義如何換行

      • nowrap:不換行

        超出容器時,縮小 item 的 main-size 或 cross-size

      • wrap:換行,第一行在上方

      • wrap-reverse:換行,第一行在下方

    • flex-flow:是 flex-direction 和 flex-wrap 的簡寫。預設值為 row nowrap

      flex-flow: column wrap
      
    • justify-content:定義專案在主軸上的對齊方式

      • flex-start(預設)

      • flex-end

      • center

      • space-around

      • space-between

      • space-evenly

        margin 指的是 item 的 margin

    • align-items

      • flex-start(預設)

      • flex-end

      • center

      • baseline

        專案第一行文字基準線對齊

    • align-content

      定義多根軸線對齊方式,若只有一根軸線,該屬性不起作用

      • flex-start:與交叉軸起點對齊

      • flex-end:與交叉軸終點對齊

      • center

      • stretch(預設值):佔滿整個容器

      • space-between

        距離關係請參照 justify-content

      • space-around

      • space-evenly

  • 專案屬性

    • order

      定義專案排序順序,數值越小,排列越靠前,預設為 0

    • flex-grow

      定義專案放大比例,預設為 0 ,即如果存在剩餘空間也不放大,如果所有專案 flex-grow 的屬性都為 1,則它們等分剩餘空間,如果一個專案為2,其他為1,則佔據空間大1倍

      :如果沒有剩餘空間,怎麼設定都沒用

    • flex-shrink

      定義了專案的縮小比例,空間不足時將專案縮小。預設為 1,各專案等比例縮小,0不縮小

    • flex-basis

      分配多餘空間之前,專案佔據的主軸空間(main size)預設為 auto (即專案本來大小),也可設定為固定值,專案佔據固定大小(設定了固定值,將不受 grow 和 shrink 的影響)

    • flex

      flex-grow,flex-shrink,flex-basis 的簡寫

    • align-self

      允許單個專案有與 其他專案不一樣的對齊方式,可覆蓋 align-items 屬性,預設為 auto(繼承父類元素屬性)