CSS3弹性布局FLEX

弹性盒子里面会放弹性元素,为盒子定义的规则,会影响里面的元素。

display:flex;

display:inline-flex;

这两个的不同之处:容器设置flex以后,会变成块级元素,当然也就可以设置宽高(如下图的橙色)

当容器设置为inline-flex后,会变为类似inline-block,把元素显示为行级块,也就没有宽度(如下图的绿色)

相同之处:都是块级元素,都能设置宽高。

 

 

 

----------------------------------------------------------------------------------------------------

没有设置弹性盒子时是这样:

代码:

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <title>FLEX</title>
    <style>
        * {
            margin :0;
            padding:0;
        }
       main {
           border:5px solid #555;
           margin-left: 40px;
           margin-top: 30px;
           width: 400px;
           /* display: flex; */
       }
       main div {
           background-color: blueviolet;
            margin:5px;
            width: 50px;
            height: 50px;
       }
    </style>
</head>
<body>
    <main>
        <div>11</div>
        <div>22</div>
        <div>33</div>
    </main>
</body>
</html>
View Code

如果设置了弹性布局(代码就是把上面代码中的注释取消掉):

 

这样是最最原始的效果,牢记:弹性盒子内的元素,他们排列有一个轴,我们可以利用这个轴做很多事情。

比如:flex-direction:column;(设置这个轴是纵向的)(row是横向的)(反转是row-reverse)

 

如果一行装不下该怎么做?有2种方法,第一种是每一个元素都变窄(或者变矮),硬往里挤,硬塞到弹性盒子里,另一种是换行继续显示。

第一种是默认的,如下图:

 

 

 实际上元素宽度要200px,但是盒子大小只有300px,并且div之间还有外边距,所以根本是装不下的,所以他们就开始“挤”。

我们控制这个属性,就可以让他们换行:flex-wrap: wrap;  如下图:

 

 调小一点是这样:

 

 也可以加上反转:flex-wrap:wrap-reverse;(变味了之前的对称轴图形,对称轴是横向的)(为什么对称轴是横向的,因为我们现在默认的排列是横向的)

综上:有2种属性,flex-derection(控制方向)和flex-wrap(控制排列方式,换行....),我们可以写到一个里面一起控制:flex-fow:row wrap;

 

------------------------------------------------------------------------------------------------------------

利用弹性盒子实现元素垂直居中:justify-content: center;(是设置主轴元素居中)(主轴不一定是水平的,可能改变了主轴的方向,只要是row或者默认,水平都是主轴)

利用副轴实现上下居中:align-items:center;(设置副轴元素居中)

 

--------------------------------------------------------------------------------------------------------

以下这两个属性是填在弹性元素上面的:

flex-grow:0;(一般是用在弹性元素小的情况下,横向平均撑起来)(这个数字是比例!)(下同)

如果填0,表示不放大,如果向上,0.1,0.2等等,他会一直放大(宽度变大),直到占满整个行。(比如0.2占满,往后都是一样的,1,2,3)

flex-shrink:0;

*****如果弹性容器宽300,每一个宽200,放4个,正常情况下,他们会平均,挤一挤,每一个宽300/4

添加该元素,并且设置为0,他们就会保持自己的宽度,多余的就会“红杏出墙”,如下图:

 

posted @ 2022-03-02 15:27  沉梦昂志_doc  阅读(123)  评论(0编辑  收藏  举报