天天看點

來一起複習一下Flex布局吧!

大家好,我是

梅巴哥er

。本篇專門複習一下Flex布局的相關知識。

參考學習網站:

  • 菜鳥教程:Flex布局
  • 阮一峰老師的總結:Flex布局

什麼是Flex布局

  • flex布局,也就是彈性布局,是W3C在2009年提出的一種新的布局形式。

Flex布局的特點

  • 靈活度高
  • 布局簡單
  • 彈性盒子

為啥要用Flex布局

  • 傳統的布局方式,是通過 display + position + float來完成的。這種形式在某些特殊布局中不是很方面,比如垂直居中。
  • flex布局具有很高的靈活性,完成這種布局,就非常友善。

怎麼用Flex布局

  • 任何一個盒子都可以指定位flex布局。
  • 塊級盒子:

    .box { display: flex; }

  • 行内元素:

    .box { display: inline-flex;}

  • 注意,盒子設為flex布局後,子元素的float, clear和vertical-aline就失效了。
  • 設定位flex布局的盒子,就叫容器。 容器内的子元素,都叫項目(item)。
  • 容器有兩根軸線,左向右的橫軸和上至下的豎軸。 項目預設沿着橫軸排列。
    來一起複習一下Flex布局吧!

Flex布局的屬性

容器的6大屬性,這些都是寫在容器上的

  • 1,

    flex-direction

    :項目的排列方向。有4個值。
    • row: → (預設)
    • row-reverse: ←
    • column: ↓
    • column-reverse: ↑
  • 2,

    flex-wrap

    :表示項目在一條軸線上排不下,如何換行。
    • nowrap: 不換行(預設)。 這樣會壓縮項目的尺寸,強行讓項目都排在一行。
    • wrap: 換行。第一行排不下,就會排去下面一行。
    • wrap-reverse: 換行。但是項目先排容器的最下面,下面排滿了,再往上面一行排。
  • 3,

    flex-flow

    :把項目排列方向和是否換行這倆屬性放在了一起。
    • 例如: flex-flow: row nowrap;
  • 4,justify-content:表示項目在橫軸上的對齊方式。5個值。
    • flex-start:左對齊
    • flex-end: 右對齊
    • center: 居中
    • space-between:左右兩端對齊,項目之間的間隔都相等
    • space-around: 每個項目兩側的間隔相等。
  • 5,

    align-items

    :項目在豎軸上的對齊。5個值
    • flex-start: 上對齊
    • flex-end: 下對齊
    • center: 居中(垂直方向的居中)
    • baseline: 項目的第一行文字的基線對齊
    • stretch: 預設值。項目被拉伸。如果項目不設定高度,則在高度上頂滿容器。
  • 6,

    align-content

    :項目對齊方式。但是容器内必須有多行的項目,該屬性才有效。6個值。
    • flex-start
    • flex-end
    • center
    • space-between
    • space-around
    • stretch(預設值)

項目的6個屬性。這些屬性是寫在item上的

  • 1,

    order

    : 表示項目的排列順序。值是數字。預設為0。
  • 2,

    flex-grow

    : 表示項目的放大比例,預設為0,即不放大。
    • 如果所有項目的flex-grow屬性都為1,則它們将等分剩餘空間(如果有的話)。
    • 如果一個項 目的flex-grow屬性為2,其他項目都為1,則前者占據的剩餘空間将比其他項多一倍。
  • 3,

    flex-shrink

    :表示項目的縮小比例,預設為1,即空間不足就縮小。
    • 如果所有項目的flex-shrink屬性都為1,當空間不足時,都将等比例縮小。
    • 如果一個項目的flex-shrink屬性為0,其他項目都為1,則空間不足時,前者不縮小。
  • 4,

    flex-basis

    : 設定項目的初始寬度。
    • 值是數字或px長度或auto
  • 5,

    flex

    : 是flex-grow, flex-shrink 和 flex-basis的簡寫,預設值為0 1 auto。後兩個屬性可選。
    • 該屬性有兩個快捷值:auto (1 1 auto) 和 none (0 0 auto)。
  • 6,

    align-self

    : 表示單獨設定該項目的對齊方式,可覆寫align-items屬性。
    • 預設值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch。
    • flex-start
    • flex-end
    • center
    • baseline
    • stretch

測試一下:垂直居中是否簡單了?

來一起複習一下Flex布局吧!

完整代碼:子盒子及子盒子裡的内容都居中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex布局</title>
    <style>
        .box {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 200px;
            height: 200px;
            border: 1px solid pink;
        }
        .box1 {
            width: 50px;
            height: 50px;
            text-align: center;
            line-height: 50px;
            background-color: purple;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="box1">hello</div>
    </div>
</body>
</html>