1. 程式人生 > >flex彈性布局學習

flex彈性布局學習

pan src 縮小 set ges 多余 含義 目前 self

一、介紹

  flex( flexible box:彈性布局盒模型),是2009年w3c提出的一種可以簡潔、快速彈性布局的屬性。主要思想是給予容器控制內部元素高度和寬度的能力。目前已得到以下瀏覽器支持:

技術分享

二、了解兩個基本概念:
  容器:需要添加彈性布局的父元素;

  項目:彈性布局容器中的每一個子元素,稱為項目;

技術分享

  容器默認存在兩根軸:水平的主軸(main axis)垂直的交叉軸(cross axis)主軸的開始位置(與邊框的交叉點)叫做main start結束位置叫做main end;交叉軸的開始位置叫做cross start結束位置叫做cross end

  項目默認沿主軸排列。單個項目占據的主軸空間叫做main size

,占據的交叉軸空間叫做cross size

三、容器屬性詳述

  1.flex-direction

    flex-direction屬性決定主軸的方向(即項目的排列方向)。

    row:主軸為水平方向,項目沿主軸從左至右排列

    column:主軸為豎直方向,項目沿主軸從上至下排列

    row-reverse:主軸水平,項目從右至左排列,與row反向

    column-reverse:主軸豎直,項目從下至上排列,與column反向

技術分享技術分享

  2、flex-wrap

    flex-wrap:定義,如果一條軸線排不下,如何換行。

    nowrap:自動縮小項目,不換行

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

技術分享

    wrap-reverse:換行,第一行在下面

技術分享

3、flex-flow

    flex-direction屬性和flex-wrap屬性的縮寫形式,默認值為row nowrap

4、justify-content

    決定item在主軸上的對齊方式,可能的值有flex-start(默認),flex-end,center,space-between,space-around。當主軸沿水平方向時,具體含義為

      flex-start:左對齊

      flex-end:右對齊

      center:居中對齊

      space- between:兩端對齊

      space-around:沿軸線均勻分布

技術分享

5、align-items

  align-items屬性:定義項目在交叉軸上的排列方式

    flex-start:頂端對齊

    flex-end:底部對齊

    center:豎直方向上居中對齊

    baseline:item第一行文字的底部對齊

    stretch:當item未設置高度時,item將和容器等高對齊

  

技術分享

6、align-content

  align-content屬性:定義了多根軸線的對齊方式。如果項目只有一根軸線,該屬性不起作用。

      flex-start:左對齊

      flex-end:右對齊

      center:居中對齊

      space- between:兩端對齊

      space-around:沿軸線均勻分布

      stretch:各行將根據其flex-grow值伸展以充分占據剩余空間

  效果圖如下

技術分享

四、作用於項目上的屬性

1、order

    order的值是整數,默認為0,整數越小,排列越靠前,如下圖所示代碼如下

<div id="wrap">
    <div class="div" style="order:4">1</div>
    <div class="div" style="order:2">2</div>
    <div class="div" style="order:3">3</div>
    <div class="div" style="order:1">4</div>
</div>

技術分享

2、flex-grow

    定義了當flex容器有多余空間時,item是否放大。默認值為0,即當有多余空間時也不放大;可能的值為整數,表示不同item的放大比例,如

<div class="wrap">
    <div class="div" style="flex-grow:1">1</div>
    <div class="div" style="flex-grow:2">2</div>
    <div class="div" style="flex-grow:3">3</div>
</div>

即當有多余空間時item1、item2、和item3以1:2:3的比例放大。

3、flex-shrink

    flex-shrink屬性 定義了項目的縮小比例,默認為1,即如果空間不足,該項目將縮小

技術分享

4、flex-basis

flex-basis屬性 定義項目占據的主軸空間。(設置後如果主軸為水平,則設置的這個屬性,相當於設置項目的寬度。原width會失效)

flex屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,默認值為0 1 auto。後兩個屬性可選。
 這個屬性有兩個快捷設置: auto=(1 1 auto)/none=(0 0 auto)

align-self屬性 :定義單個項目自身在交叉軸上的排列方式,可以覆蓋掉讓其上的align-items屬性
  屬性值:與align-items相同,默認值為auto,表示繼承父容器的align-items屬性。

flex彈性布局學習