天天看點

flex布局(主要厘清楚容器和條目)

設定在容器上面的屬性:

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

1、flex-direction: row | row-reverse | column | column-reverse;

row(預設值):主軸為水準方向,起點在左端。

row-reverse:主軸為水準方向,起點在右端。

column:主軸為垂直方向,起點在上沿。

column-reverse:主軸為垂直方向,起點在下沿。*/

2、flex-wrap: nowrap | wrap | wrap-reverse;

nowrap(預設):不換行。

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

wrap-reverse:換行,第一行在下方。*/

3、flex-flow: <flex-direction> || <flex-wrap>;

flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式,預設值為row nowrap。*/

4、justify-content: flex-start | flex-end | center | space-between | space-around;

flex-start(預設值):左對齊

flex-end:右對齊

center: 居中

space-between:兩端對齊,項目之間的間隔都相等。

space-around:每個項目兩側的間隔相等。是以,項目之間的間隔比項目與邊框的間隔大一倍。*/

5、align-items: flex-start | flex-end | center | baseline | stretch;

flex-start:交叉軸的起點對齊。

flex-end:交叉軸的終點對齊。

center:交叉軸的中點對齊。

baseline: 項目的第一行文字的基線對齊。

stretch(預設值):如果項目未設定高度或設為auto,将占滿整個容器的高度。*/

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

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

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

center:與交叉軸的中點對齊。

space-between:與交叉軸兩端對齊,軸線之間的間隔平均分布。

space-around:每根軸線兩側的間隔都相等。是以,軸線之間的間隔比軸線與邊框的間隔大一倍。

stretch(預設值):軸線占滿整個交叉軸。*/

設定在項目上的屬性:

1、order: <integer>;定義項目的排列順序。數值越小,排列越靠前,預設為0。

2、flex-grow: <number>;定義項目的放大比例,預設為0,即如果存在剩餘空間,也不放大。

3、flex-shrink: <number>定義了項目的縮小比例,預設為1,即如果空間不足,該項目将縮小。

4、flex-basis: <length> | auto;定義了在配置設定多餘空間之前,項目占據的主軸空間(main size)。浏覽器根據這個屬性,計算主軸是否有多餘空間。它的預設值為auto,即項目的本來大小。

5、 flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]是flex-grow, flex-shrink 和 flex-basis的簡寫,預設值為0 1 auto。後兩個屬性可選。

6、align-self: auto | flex-start | flex-end | center | baseline | stretch;屬性允許單個項目有與其他項目不一樣的對齊方式,可覆寫align-items屬性。預設值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch。

例子:彈性布局

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
      *{
        margin: 0;
        padding: 0;
      }
      ul{
        list-style: none;
        display:flex;
        align-items:center;
        /*flex-direction: column ;*/
      }
      li{ 
        flex: 1;
      }
      ul li img{
        width: 200px;
      }
    </style>
  </head>
  <body>
    <ul>
      <li><img src="pic01.jpg"/></li>
      <li><img src="pic01.jpg"/></li>
      <li><img src="pic01.jpg"/></li>
      <li><img src="pic01.jpg"/></li>
  </ul>
  </body>
</html>