flex布局

如何使用flex布局?

设置父容器为display:fiex,如 :

<!DOCTYPE html>
<html>
<head>
    <style>
        .f1{
            width: 500px;
            border: 2px solid #aaaaaa;
        }
        .f2,
        .f3,
        .f4{
            width: 200px;
            height: 200px;
            background-color: blueviolet;
        }
        .f3{
            background-color: yellowgreen;
        }

        .f1{
            display: flex; <!--这里!-->
        }
    </style>
</head>
<body>
   <div class="f1">
        <div class="f2"></div>
        <div class="f3"></div>
        <div class="f4"></div>
        <div class="f3"></div>
        <div class="f4"></div>
        <div class="f3"></div>
   </div>
</body>
</html>

运行效果 :


flex布局特性

当父元素装不下子元素时,子元素会被缩放。(如上面的例子)不管我增加多少个子元素,都能在一行内展示。


设置子元素不缩放

使用flex-shrink属性,可以设置子元素不缩放。如 :

<!DOCTYPE html>
<html>
<head>
    <style>
        .f1{
            width: 500px;
            border: 2px solid #aaaaaa;
        }
        .f2,
        .f3,
        .f4{
            width: 200px;
            height: 200px;
            background-color: blueviolet;
            flex-shrink: 0; <!--0为不缩放,1为缩放。默认值是1-->
        }
        .f3{
            background-color: yellowgreen;
        }
        .f1{
            display: flex;
        }
    </style>
</head>
<body>
   <div class="f1">
        <div class="f2"></div>
        <div class="f3"></div>
        <div class="f4"></div>
        <div class="f3"></div>
        <div class="f4"></div>
        <div class="f3"></div>
   </div>
</body>
</html>


子元素在主轴的排列方式 (主轴 : x轴、水平方向)

子元素在主轴的排列方式有4种,分别是 :

row:从左向右 (默认这个~~)


row-reverse从右往左:从右往左


column:从上往下


column-reverse:从下往上


下面我们以子元素“从右往左”排列举一个例子 :

<!DOCTYPE html>
<html>
<head>
    <style>
        .f1{
            width: 800px;
            height: 200px;
            background-color: #cccccc;
            display: flex;
            flex-direction:row-reverse; <!--子元素从右往左排列-->
        }
        .item{
            width: 200px;
            height: 200px;
            border: 1px dashed #333333;
            box-sizing: border-box;
            font-size: 40px;
            text-align: center;
            line-height: 200px;
        }
    </style>
</head>
<body>
   <div class="f1">
       <div class="item">1</div>
       <div class="item">2</div>
       <div class="item">3</div>
       <div class="item">4</div>
   </div>
</body>
</html>

子元素在主轴上的对其方式

子元素在主轴上对其方式有5种,分别是 :

flex-start:靠近起点


center :居中


flex-end :靠近终点


space-between : 两端对齐


space-around : 每个子元素两侧的间隔都相等

例子 :

<!DOCTYPE html>
<html>
<head>
    <style>
        .f1{
            
            width: 800px;
            background-color: #cccccc;
            display: flex;
            flex-direction: row;   
            justify-content: space-between; <!--两端对齐-->
        }
        .item{
            width: 200px;
            height: 200px;
            border: 1px dashed #333333;
            box-sizing: border-box;
            font-size: 40px;
            text-align: center;
            line-height: 200px;
        }
    </style>
</head>
<body>
   <div class="f1">
       <div class="item">1</div>
       <div class="item">2</div>
       <div class="item">3</div>
   </div>
</body>
</html>


子元素在交叉轴的对其方式 (交叉轴:y轴、竖直方向)

子元素在交叉轴的对其方式有3种,分别是 :

flex-start:起点 (默认是这个~~)


center:居中


flex-end:终点


下面我们以子元素“居中”对其举一个例子 :

<!DOCTYPE html>  
<html>  
<head>  
    <style>  
        .f1{  
            width: 800px;  
            height: 200px;  
            background-color: #cccccc;  
            display: flex;  
            align-items: center;  <!--子元素居中对其-->
        }  
        .item{  
            width: 200px;  
            height: 50px;  
            border: 1px dashed #333333;  
            box-sizing: border-box;  
            font-size: 40px;  
            text-align: center;  
            line-height: 50px;  
        }  
    </style>  
</head>  
<body>  
   <div class="f1">  
       <div class="item">1</div>  
       <div class="item">2</div>  
       <div class="item">3</div>  
       <div class="item">4</div>  
   </div>  
</body>  
</html>  

子元素换行方式

当子元素超出父元素的宽度时,默认是不换行的,子元素各个会被缩放。这里可以使用flex-wrap属性,设置子元素如何换行。

flex-wrap有2个值,分别是 :

wrap:最后一个元素会被挤下来


wrap-reverse:最后一个元素会被挤上去


例子 :

<!DOCTYPE html>
<html>
<head>
    <title>flex换行</title>
    <style>
        .f1{
            width: 800px;
            background-color: #cccccc;
            display: flex;
            flex-direction: row;   
            flex-wrap: wrap-reverse; <!--最后一个元素会被挤上去-->
        }
        .item{
            width: 200px;
            height: 200px;
            border: 1px dashed #333333;
            box-sizing: border-box;
            font-size: 40px;
            text-align: center;
            line-height: 200px;
        }
    </style>
</head>
<body>
   <div class="f1">
       <div class="item">1</div>
       <div class="item">2</div>
       <div class="item">3</div>
       <div class="item">4</div>
       <div class="item">5</div>
   </div>
</body>
</html>


子元素排序

使用order属性,可以为某个子元素设置排序。数值越小,排序越靠前,默认为0

例子:

<!DOCTYPE html>
<html>
<head>
    <style>
        .f1{
            width: 800px;
            height: 200px;
            background-color: #cccccc;
            display: flex;
            flex-direction: row;   
        }
        .item{
            width: 200px;
            height: 200px;
            border: 1px dashed #333333;
            box-sizing: border-box;
            font-size: 40px;
            text-align: center;
            line-height: 200px;
        }
        .ff{
            order: -1; <!--这里-->
        }
    </style>
</head>
<body>
   <div class="f1">
       <div class="item">1</div>
       <div class="item">2</div>
       <div class="item ff">3</div>
   </div>
</body>
</html>

运行效果 :











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值