flex布局水平垂直居中


如何讓子元素在父元素中上下左右居中?

經過在“逆戰班”的學習我們已經掌握了三種方法:

    1. 定位 + 拉取 (子元素固定大小)

    2. margin:auto + position的上下左右0

    3. 定位 + 位移50%

這周的學習又讓我們學習到了第四種方案來解決這個問題,利用flex布局(彈性布局)來實現子元素在父元素中的上下左右居中。

首先要了解flex語句,在了解語句后,就可以利用他們來解決問題。

首先要給父元素設置:

1、display : flex;表示其內部的子元素具有彈性空間

2、flex-direction: row; 布局的排列方向 (主軸排列方向)

   row: 默認值,顯示為行。方向為當前文檔水平流方向,默認情況下是從左往右。

   row-reverse:  顯示為行。但方向和row屬性值是反的

   column:  顯示為列

   column-reverse: 顯示為列。但方向和column屬性值是反的

3、justify-content ; 屬性決定了主軸方向上子項的對齊和分布方式。 

   flex-start : 子項都去起始位置對齊。

   flex-end : 子項都去結束位置對齊。

   center : 子項都去中心位置對齊。

   space-between : 表現為兩端對齊。between是中間的意思,意思是多余的空白間距只在元素中間區域分配。

   space-around : around是環繞的意思,意思是每個flex子項兩側都環繞互不干擾的等寬的空白間距,最終視覺上邊緣兩側的空白只有中間空白寬度一半。

   space-evenly : evenly是勻稱、平等的意思。也就是視覺上,每個flex子項兩側空白間距完全相等。

  如果主軸為row,那么在主軸方向上(即水平方向上)居中對齊,可為父元素設置:

justify-content: center;

  4、align-items : 每一行中的子元素上下對齊方式。

     flex-start;  子項都去起始位置對齊

     center;    子項都去中心位置對齊

     flex-end;  子項都去結束位置對齊

  如果主軸為row,那么在垂直主軸方向上(即垂直方向上)居中對齊,可為父元素設置:

align-items: center;

下面進行簡單的示例:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <style>

        #father{width: 300px;height: 300px;background-color: blue;margin: 30px auto;

        display: flex;}

        #father div{width: 100px;height: 100px;background-color: red;

       }

    </style>

</head>

<body>

    <div id="father">

        <div></div>

    </div>

</body>

</html>

此時為僅為父元素設置display: flex;樣式。
為父元素添加居中樣式:

        #father{width: 300px;height: 300px;background-color: blue;margin: 30px auto;

                 display: flex;

      justify-contentcenter;align-itemscenter;}

效果如下:

子元素已在父元素中居中。


免責聲明!

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



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