CSS高級技巧(7)伸縮佈局

伸縮佈局

1. 使用:

display: flex;

flex: 2;    /*可以自由設置佔據份數*/

min-width: 200px;   /*限制寬度不被擠壓太多*/

max-width: 500px;   /*限制最大寬度*/

 

2. 排列方向:

flex-direction: row;      //默認水平

flex-direction: row-reverse;      //水平排列,反向

flex-direction: clumn;      //排列方式垂直

flex-direction: clumn-reverse;      //垂直排列,反向

 

3. justify-content

文檔:https://www.runoob.com/cssref/css3-pr-justify-content.html

屬性值

描述 測試
flex-start 默認值。項目位於容器的開頭。 測試 »
flex-end 項目位於容器的結尾。 測試 »
center 項目位於容器的中心。 測試 »
space-between 項目位於各行之間留有空白的容器內。 測試 »
space-around 項目位於各行之前、之間、之後都留有空白的容器內。 測試 »
initial 設置該屬性爲它的默認值。請參閱 initial 測試 »
inherit 從父元素繼承該屬性。請參閱 inherit  

 

4. align-items   調整側軸對齊

https://www.runoob.com/cssref/css3-pr-align-items.html

屬性值

描述 測試
stretch

默認值。元素被拉伸以適應容器。

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

測試 »
center

元素位於容器的中心。

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

測試 »
flex-start

元素位於容器的開頭。

彈性盒子元素的側軸(縱軸)起始位置的邊界緊靠住該行的側軸起始邊界。

測試 »
flex-end

元素位於容器的結尾。

彈性盒子元素的側軸(縱軸)起始位置的邊界緊靠住該行的側軸結束邊界。

測試 »
baseline

元素位於容器的基線上。

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

測試 »
initial 設置該屬性爲它的默認值。請參閱 initial 測試 »
inherit 從父元素繼承該屬性。請參閱 inherit  

 

5. flex-wrap    控制是否換行

https://www.runoob.com/cssref/css3-pr-flex-wrap.html

屬性值

描述
nowrap 默認值。規定靈活的項目不拆行或不拆列。
wrap 規定靈活的項目在必要的時候拆行或拆列。
wrap-reverse 規定靈活的項目在必要的時候拆行或拆列,但是以相反的順序。
initial 設置該屬性爲它的默認值。請參閱 initial
inherit 從父元素繼承該屬性。請參閱 inherit

 

6. align-content     堆棧(由flex-wrap產生的獨立行)對齊

https://www.runoob.com/cssref/css3-pr-align-content.html

描述 測試
stretch

默認值。元素被拉伸以適應容器。

各行將會伸展以佔用剩餘的空間。如果剩餘的空間是負數,該值等效於'flex-start'。在其它情況下,剩餘空間被所有行平分,以擴大它們的側軸尺寸。

測試 »
center

元素位於容器的中心。

各行向彈性盒容器的中間位置堆疊。各行兩兩緊靠住同時在彈性盒容器中居中對齊,保持彈性盒容器的側軸起始內容邊界和第一行之間的距離與該容器的側軸結束內容邊界與第最後一行之間的距離相等。(如果剩下的空間是負數,則各行會向兩個方向溢出的相等距離。)

測試 »
flex-start

元素位於容器的開頭。

行向彈性盒容器的起始位置堆疊。彈性盒容器中第一行的側軸起始邊界緊靠住該彈性盒容器的側軸起始邊界,之後的每一行都緊靠住前面一行。

測試 »
flex-end

元素位於容器的結尾。

各行向彈性盒容器的結束位置堆疊。彈性盒容器中最後一行的側軸起結束界緊靠住該彈性盒容器的側軸結束邊界,之後的每一行都緊靠住前面一行。

測試 »
space-between

元素位於各行之間留有空白的容器內。

各行在彈性盒容器中平均分佈。如果剩餘的空間是負數或彈性盒容器中只有一行,該值等效於'flex-start'。在其它情況下,第一行的側軸起始邊界緊靠住彈性盒容器的側軸起始內容邊界,最後一行的側軸結束邊界緊靠住彈性盒容器的側軸結束內容邊界,剩餘的行則按一定方式在彈性盒窗口中排列,以保持兩兩之間的空間相等。

測試 »
space-around

元素位於各行之前、之間、之後都留有空白的容器內。

各行在彈性盒容器中平均分佈,兩端保留子元素與子元素之間間距大小的一半。如果剩餘的空間是負數或彈性盒容器中只有一行,該值等效於'center'。在其它情況下,各行會按一定方式在彈性盒容器中排列,以保持兩兩之間的空間相等,同時第一行前面及最後一行後面的空間是其他空間的一半。

測試 »
initial 設置該屬性爲它的默認值。請參閱 initial 測試 »
inherit 從父元素繼承該屬性。請參閱 inherit  

 

7. flex-flow   是 flex-direction、flex-wrap的簡寫形式

https://www.runoob.com/cssref/css3-pr-flex-flow.html

屬性值

描述
flex-direction 可能的值:

row
row-reverse
column
column-reverse
initial
inherit

默認值是 "row"。

規定靈活項目的方向。

flex-wrap 可能的值:

nowrap
wrap
wrap-reverse
initial
inherit

默認值是 "nowrap"。

規定靈活項目是否拆行或拆列。

initial 設置該屬性爲它的默認值。請參閱 initial
inherit 從父元素繼承該屬性。請參閱 inherit

 

8. order     控制子項目的排列順序,正序方式排列,從小到大

https://www.runoob.com/cssref/css3-pr-order.html

屬性值

描述
number 默認值是 0。規定靈活項目的順序。
initial 設置該屬性爲它的默認值。請參閱 initial
inherit 從父元素繼承該屬性。請參閱 inherit

 

示例

<html>

<head>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        section {
            width: 80%;
            height: 200px;
            border: 1px solid pink;
            margin: 100px auto;

            display: flex;  /*伸縮佈局模式*/
            min-width: 500px;   /*限制寬度不被擠壓太多*/
            max-width: 500px;   /*限制寬度*/

            /* 水平對齊的4種方式*/
            /* justify-content: flex-start;  讓子元素在父容器開頭排序,順序不變 */
            /* justify-content: flex-end;  讓子元素在父容器結尾排序,順序不變 */
            /* justify-content: space-between;  左右貼邊,中間空白區域平均分配 */
            /* justify-content: space-around;  相當於給每個盒子添加左右margin外邊距 */

            /* 垂直對齊的4種方式*/
            /* align-items: flex-start; 上對齊 */
            /* align-items: flex-end; 底對齊 */
            /* align-items: center; 垂直居中 */
            /* align-items: stretch; 子元素的高度拉伸至父容器高度(子元素不給高度的前提下) */


            /* flex-wrap 換行*/
            /* flex-wrap: nowarp;  默認不換行,超出就把寬度等比壓縮 */
            /* flex-wrap: warp;  換行 */
            /* flex-wrap: warp-reverse;  換行,多的部分到上一行 */

            
            /* align-content 多行垂直對齊 必須指定 dispaly: flex; 和 flex-flow: XXX; 才能使用 */
            /* align-content: stretch;  默認 */
            /* align-content: center;  位於容器中心 */
            /* align-content: flex-start;  容器開頭 */
            /* align-content: flex-end;  容器結尾 */
            /* align-content: space-between;  各行之間有間隙 */
            /* align-content: space-around;  各行之前、之間、之後 都有間隙 */


            /* flex-flow: 是 flex-direction、flex-wrap的簡寫形式 */
            /* flex-flow: row nowrap;  */
        }

        div {
            margin: 0 5px;
            height: 100%;
            flex: 1;    /*每個盒子佔1等份*/
        }

        section div:nth-child(1) {
            background-color: red;
        }
        section div:nth-child(2) {
            background-color: yellow;
            flex: 2;    /*可以自由設置佔據份數*/
            /* order  控制子元素的排列順序,正序爲從小到大,默認0*/
            /* order: 1;     */
        }
        section div:nth-child(3) {
            background-color: blue;
            flex: 3;    /*可以自由設置佔據份數*/
        }

    </style>
</head>

<body>
    <section>
        <div></div>
        <div></div>
        <div></div>
    </section>
</body>

</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章