flex布局(2)

197 阅读1分钟

一、flex四大概念

    1)容器   如果给一个div设置了 display:flex; 那么这个div就是一个容器。
    2)项目   容器中的直接子元素叫项目。
    3)主轴   默认情况下,项目是在主轴上进行排列的,从主轴的开始位置开始。
    4)交叉轴 和主轴垂直的那个轴就是交叉轴。

flex在移动端进行布局,非常方便。

二、12个属性

学习flex就是学习12个属性,有6个是对于容器的设置,有6个是对于项目的设置。

1、容器相关的6大属性:

    1flex-direaction: 设置主轴的方向
    2flex-wrap: 如果项目足够多时,是否换行
    3flex-flow: 是上面两个属性的简写
    4justify-content: 处理主轴上的富空间
    5align-items:  设置项目在交叉轴上的位置
    6align-content: 如果有多根主轴,多根主轴的摆放位置

2、项目相关的6大属性:

    1order:  设置项目在主轴上的排列顺序
    2flex-grow: 如果有富余空间,设置项目生长的因子
        <style>
           *{ margin: 0; padding: 0; }
           .box{ width: 400px;height: 400px;border: 1px solid red; display: flex;}
           .item{ width: 100px;height: 100px; flex: 1;}
           /* 需要把富余空间分成三份,一人占一份 */
           /* .item1{ flex-grow: 1; }
           .item2{ flex-grow: 1; }
           .item3{ flex-grow: 1; } */
           /* .item1{ flex: 1; }
           .item2{ flex: 1; }
           .item3{ flex: 1; } */
        </style>
    
    3flex-shrink:  如果项目在主轴上装不下,设置项目的缩小因子 (基本上不用)
    
    4flex-basis: 设置项目在主轴的占据大小
        <style>
           *{ margin: 0; padding: 0; }
           .box{ width: 400px;height: 400px;border: 1px solid red; display: flex;}
           .item{ width: 100px;height: 100px; }
           /* 一个盒子,可以通过width来设置盒子在主轴上占据的大小 */
           /* 也可以通过flex-basis来设置盒子的大小 */
           /* 如果说有width,又有flex-basis,那么是flex-basis起作用 */
           .item1{ flex-basis: 200px; }
         </style>
    
    5align-self: self自己的意思  设置某个项目在交叉轴上的位置
         <style>
            *{ margin: 0; padding: 0; }
            .box{ width: 400px;height: 400px;border: 1px solid red; display: flex;}
            .item{ width: 100px;height: 100px; }
            /* .item3{ align-self: flex-end; } */
           .item3{ align-self: center; }
         </style>
    
    6flex: 是一个复合属性
        flex:flex-grow flex-shrink flex-basis  基本上后面面两个属性不写
        flex来代替flex-grow。  flex:1;  ===>  flex-grow:1;
        

三、色子案例

<!DOCTYPE <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" media="screen" href="main.css">
    <script src="main.js"></script>
    <style>

        .container {
           display: flex;
           padding: 10px;
           width: 150px;
           height: 150px;
           border: 2px solid red;
           border-radius: 10px;
           background: #fff;
           box-shadow: 3px 3px 3px 0px #999;
           margin: 50px;
        }

        .item {
            width: 50px;
            height: 50px;
            background-color: aqua;
            border-radius: 50%;
            /*可以绘制成一个圆形*/
            box-shadow: 1px 1px 2px 0px blue;
        }

        .one {
            justify-content: center;
            align-items: center;
        }

        .two {
            justify-content: space-between;
            align-items: center;
        }
      
        .three {
            flex-direction: column;
            justify-content: space-around;
            align-items: center;
        }

        .three div:first-child {
            align-self: flex-start;
        }

        .three div:last-child {
            align-self: flex-end;
        }
        .four {
            /* flex-direction: column; */
            justify-content: space-around;
        }

        .four .item {
            margin: 15px;
        }

        .four div {
            align-items: space-between;

        }
        .five,.six {
            flex-direction: column;
            flex-flow: wrap;
            justify-content: space-around;
        }

        .five .item,.six .item {
            margin-right: 10px;
            margin-left: 10px;
            display: inline-block;
        }

    </style>
</head>
<body>
   
    <!-- 一点 -->
    <div class="container one">
            <div>
                <div class="item"></div>
            </div>
        </div>
       
     <!-- 二点 -->
    <div class="container two">
             <div>
                    <div class="item"></div>
        
             </div>
            <div>
                   <div class="item"></div>
        
             </div>
    </div>
    
    <!-- 三点 -->
    <div class="container three">
                <div class="item"></div>
                <div class="item"></div>
                <div class="item"></div>
     </div>
     <!-- 四点 -->
    <div class="container four">
                <div>
                    <div class="item"></div>
                    <div class="item"></div>
                </div>
                 <div>
                    <div class="item"></div>
                    <div class="item"></div>
                  </div>
    </div>
     <!-- 五点 -->
     <div class="container five">
            <div>
                <div class="item"></div>
                <div class="item"></div>
            </div>
            <div>
                <div class="item"></div>
            </div>
            <div>
                <div class="item"></div>
                <div class="item"></div>
            </div>
        </div>
<!-- 六点 -->
        <div class="container six">
            <div>
                <div class="item"></div>
                <div class="item"></div>
            </div>
            <div>
                <div class="item"></div>
                <div class="item"></div>
            </div>
            <div>
                <div class="item"></div>
                <div class="item"></div>
            </div>
        </div>
        
</html>

运行结果显示为:

1.PNG 2.PNG