CSS3 彈性盒子(Flex Box) flex布局總結


彈性盒子內容

彈性盒子由彈性容器(Flex container)和彈性子元素(Flex item)組成。

彈性容器通過設置 display 屬性的值為 flex 或 inline-flex將其定義為彈性容器。

彈性容器內包含了一個或多個彈性子元素。

注意: 彈性容器外及彈性子元素內是正常渲染的。彈性盒子只定義了彈性子元素如何在彈性容器內布局。

彈性子元素通常在彈性盒子內一行顯示。默認情況每個容器只有一行。

彈性盒子屬性

  1.display  指定HTML元素盒子類型

    display: flex; 設置為flex彈性盒子布局

  2.flex-direction  指定了彈性盒子中子元素的排列方式。flex-direction的值有:

    row  橫向從左到右排列,默認排列方式

    row-reverse  反轉橫向排列,最后一項排在最前面

    column  縱向排列

    column-reverse  反轉縱向排列,最后一項排在最上面

 

  3.justify-content  設置彈性盒子元素在主軸方向上的對齊方式。justify-content的值有:

    flex-start  默認值。項目位於容器的開頭

    flex-end  項目位於容器的結尾

    center  項目位於容器的中心

    space-between  項目位於各行之間留有空白的容器內

    space-around  項目位於各行之前,之間,之后 都留有空白的容器內

    

  4.align-items  設置彈性盒子元素在側軸方向上的對齊方式。align-items的值:

    flex-start  元素位於容器的開頭。起始位置緊靠住該行的側軸起始邊界

    flex-end  元素位於容器的結尾。起始位置緊靠住該行的側軸結束邊界

    center  元素位於容器的中心。彈性盒子元素在該行的側軸上居中放置。若該行的尺寸小於彈性盒子元素尺寸,則會向兩個方向溢出相同的長度

    stretch  默認值。元素被拉伸以適應容器。若指定側軸大小的屬性值為auto,則其值會使項目的邊距盒的尺寸盡可能接近所在行的尺寸,

          但同時會遵照'min/max-width/height'屬性的限制。

    baseline  元素位於容器的基線上,如彈性盒子子元素的行內軸與側軸為同一條,則該值與’'flex-start'等效。其它情況下,該值將參與基線對齊。

    

  5.flex-wrap  設置彈性盒子的子元素超出父容器時是否換行。flex-wrap的值:

    nowrap  默認,彈性容器為單行。該情況下彈性子項可能會溢出容器。

    wrap  彈性容器為多行,該情況下彈性子項溢出的部分會被放置到新行,子項內部會發生斷行

    wrap-reverse  反轉 wrap 排列

 

  6.align-content  修改flex-wrap屬性的行為,類似align-items,但不是設置子元素對齊,而是設置行對齊。align-content的值有:

    stretch  默認。各行將會伸展以占用剩余的空間

    flex-start  各行向彈性盒容器的起始位置堆疊

    flex-end  各行向彈性盒容器的結束位置堆疊

    center  各行向彈性盒容器的中間位置堆疊

    space-between  各行在彈性盒容器中平均分布

    space-around  各行在彈性盒容器中平均分分布,兩端保留子元素與子元素之間間距大小的一半

 

  7.flex-flow  flex-direction 和 flex-wrap 的簡寫

    例:flex-flow: row wrap;

 

  8.order  設置彈性盒子的子元素排列順序

    order: number;

    

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
#main {
    width: 400px;
    height: 150px;
    border: 1px solid #c3c3c3;
    display: -webkit-flex; /* Safari */
    display: flex;
}
#main div {
    width: 70px;
    height: 70px;
}
div#myRedDIV   {order: 2;}
div#myBlueDIV  {order: 4;}
div#myGreenDIV {order: 3;}
div#myPinkDIV  {order: 1;}
</style>
</head>
<body>
<div id="main">
  <div style="background-color:coral;" id="myRedDIV"></div>
  <div style="background-color:lightblue;" id="myBlueDIV"></div>
  <div style="background-color:lightgreen;" id="myGreenDIV"></div>
  <div style="background-color:pink;" id="myPinkDIV"></div>
</div>
</body>
</html>

 

  9.align-self  在彈性子元素上使用。覆蓋容器的 align-items 屬性(用於設置彈性元素自身在側軸方向上的對齊方式)

    auto  如果align-self的值為auto,則其計算值為元素的父元素的align-items值,如果其沒有父元素,則計算值為stretch

    flex-start  彈性盒子子元素的側軸起始位置的邊界緊靠住該行的側軸起始邊界

    flex-end  彈性盒子元素的側軸起始位置的邊界緊靠住該行的側軸結束邊界

    center  彈性盒子元素在該行的側軸上居中放置(如果該行的尺寸小於彈性盒子元素的尺寸,則會向兩個方向溢出相同的長度)

    baseline  如彈性盒子元素的行內軸與側軸為同一條,則該值與flex-start等效,其他情況下,該值將參與基線對齊

    stretch  如果指定側軸大小的屬性值為auto,則其值會使項目的邊距盒尺寸盡可能接近所在行的尺寸,但同時會遵照min/max-width/htight屬性的限制

     示例:將第二個黑色的方塊放在右下角

    

.parent{
  background-color: pink;
  width: 100px;
  height: 100px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  .children{
    background-color: black;
    margin: 2px;
    width: 20px;
    height: 20px;
  }
  .children:nth-child(2){
    align-self: flex-end;
  }
}

 

  10.flex  設置彈性盒子的子元素如何分配空間

 

  11.flex-basis  設置或檢索彈性盒子伸縮基准值

    number  一個長度單位或一個百分比,規定靈活項目的初始長度

    auto  默認值。長度等於靈活項目的長度。如果該項目未指定長度,則長度將根據內容決定。

    initial  設置該屬性為它的默認值

    inherit  從父元素繼承該屬性

    

.parent {
  width: 100%;
  height: 100%;
  display: flex;
  .children {
    width: 20px;
    height: 50px;
  }
}
/*設置第二個彈性盒元素的初始長度為 80 像素*/
.children:nth-child(2) {
  flex-basis: 80px;
}

 

   12.flex-grow  用於設置或檢索彈性盒子的擴展比率

    number  一個數字,規定項目相對於其他靈活的項目進行擴展的量

    initial  該屬性為它的默認值

    inherit  從父元素繼承該屬性

       

/*
  當父元素的寬度大於子元素之和時,flex-grow 會分享剩余的空間,通過 flex-grow 的值來進行分配
  最初每個子元素寬度都是 40 ,第1,3分享了1份,第二個div分享了2份,最終 寬度為 60 80 60
*/ .parent { width: 200px; height: 100%; display: flex; .children { width: 40px; height: 50px; } } /*讓第二個元素的寬度為其他元素的2倍:*/ .children:nth-child(1) { flex-grow: 1; } .children:nth-child(2) { flex-grow: 2; } .children:nth-child(3) { flex-grow: 1; }

 

  13.flex-shrink  指定了flex元素的收縮規則。flex元素僅在默認寬度之和大於容器的時候才會發生收縮,

    其收縮的大小是依據 flex-shrink 的值.

    number  一個數字,規定項目將相對於其他靈活的項目進行收縮的量

    

/*
  
父元素的寬度是300,子元素的寬度是100,總的寬度就是400。寬度超出100,
  定義的第二個子元素的收縮值為 3,默認為1,總共就是6,一份相當於 100/6
  則第 1,3,4 收縮 100/6,第二個元素收縮 (100/6) * 3
*/ .parent { width: 300px; height: 100%; display: flex; .children { width: 100px; height: 100px; flex-shrink: 1;/*默認值 1*/ } } .children:nth-child(2){ flex-shrink: 3; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM