flex 新老版本的对比

1.什么是flex?

     CSS3 弹性盒子(Flexible Box 或 Flexbox),是一种用于在页面上布置元素的布局模式,使得当页面布局必须适应不同的屏幕尺寸和不同的显示设备时,元素可预测地运行/列。对于许多应用程序,弹性盒子模型提供了对块模型的改进,因为它不使用浮动,flex容器的边缘也不会与其内容的边缘折叠。

   1). 一些基本概念:

             1.设置了display:flex的元素称为容器,里面的第一层子元素称为项目

              2. 主轴: 默认水平方向,从左向右,                    交叉轴: 默认是垂直方向,从上往下

                  主轴起点-主轴与左边框的交叉点                        交叉轴起点 : 交叉轴轴与上边框的交叉点

                  主轴终点-主轴与左边框的交叉点                        交叉轴终点 : 交叉轴轴与下边框的交叉点

                  主轴空间:项目占据主轴的空间,项目的宽       交叉轴空间:项目占据交叉轴的空间,项目的高

        如图所示:

                    

        

flex是不同于block ,inline-block的新的布局

   2).属性: 

            (1) 容器属性:

            01.flex-direction: 设置主轴方向

                         值: row      |    row-reverse  |   column   |  column-reverse

                         默认值从左往右  |  从右往左  |  从上到下  |  从下到上

         

          02 flex-wrap : 设置是否自动换行

                        值: no-wrap    |    wrap     |   wrap-reverse

                                不自动换行(会自动压缩宽高)  |  自动换行(平分容器)  |  自动换行且翻转

      

      03 flex-flow   复合属性   设置主轴方向和是否换行

                  如:column wrap;

     04 justify-content  主轴的对齐方式

                 值:flex-start  |  flex-end  |  center  |  space-around  | space-between   

                  主轴开始方向对齐 | 主轴结束方向对齐 | 中心对齐 |  间隔等分-左右间隔  |  两端对齐,间隔等分

   05 align-items 在交叉轴上的

       值:flex-start | flex-end | center |  baseline  | stretch

        交叉轴的开始 | 交叉轴的结束 | 居中 |  按文字的基准线对齐 | 拉伸(当元素的高度为auto或没设置起作用)

 

     06 align-content  交叉轴设置多根轴线(有换行的)的对齐方式

        值: flex-start | flex-end | center | space-between | space-around | stretch

        

       

 (2) 项目属性:      

             1.order  排序,数值越小越靠前,默认值为0
             2.flex-grow   按比例分配剩余空间 -  属性定义项目的放大比例,默认为0(剩余空间不放大也不缩小)
                            数值是一个比例值

            3.flex-shrink 默认为1.定义项目的缩小比例,即空间不足,该项目缩小,0代表不缩小
                          谁设置缩小,从谁身上拿取,超出部分来进行计算
            4.flex-basis  定义了在分配多余的空间之前,项目占据的主轴空间
                         这个一般是和放大缩小一起用
                         让一个位置固定  flex-basis:200px;
                                        flex-shrink:0;
                                        flex-grow: 0;
                                flex: 0 0 200px(沿着主轴方向)

            5.flex  复合属性  flex-grow flex-shrink || flex-basis 
                     特殊值 auto  === 1 1 auto
                            none  === 0 0 auto
           
           6.align-self  允许单个项目与其他项目不一样的对齐方式
                         auto | flex-start | flex-end | center | baseline | stretch
                        
                         默认继承,如果没有继承,默认拉伸

2.flex 布局-新老版本对比

注意点:项目永远在x轴的正方向

     分类 :老版本的  -webkit-box 

                  新版本的   flex

老版本的    display:-webkit-box;

             容器上的属性      -webkit-box-orident     属性值:horizontal    控制主轴为x轴

                                                                                         vertical       控制主轴为Y轴

                                        -webkit-box-direction     属性值:normal     正常方向  x的右边  y的下边

                                                                                             reverse    相反的方向

                                      富裕空间的管理    主轴    -webkit-box-pack    属性值: start    x轴的右边   y轴的下边

                                                                                                                          end     x轴的左边    y轴的上边

                                                                                                                          center   富裕空间在两边

                                                                                                                           justify   富裕空间在项目之间

                                                                     侧轴    -webkyit-box-align    属性值: start      y轴的下边   x轴的右边

                                                                                                                              end         y轴的上边    x轴的左边

                                                                                                                               center   富裕空间在两边

             项目上的管理:弹性空间的管理   -webkit-box-flex  属性值为number 

 

新版本flex     display:flex;

              容器上的管理   flex-direction   属性值: row     x轴的右边为主轴

                                                                             column    y轴的下边为主轴

                                                                             row-reverse  x轴的左边为主轴

                                                                             column-reverse  y轴的上边为主轴

                                         富裕空间的管理     主轴    justify-content     flex-start           主轴的正方向

                                                                                                              flex-end             主轴的反方向

                                                                                                              center               

                                                                                                              space-between

                                                                                                              space-around

                                                                    侧轴    justify-content        flex-start           侧轴的正方向

                                                                                                              flex-end            侧轴的反方向

                                                                                                              center               

                                                                                                              baseline              根据基线

                                                                                                              strech                拉伸,用于等高布局

                     弹性空间的管理  flex-grow   默认值为0

 

3.常用的flex布局

     左中右布局

    

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        html,body,.box {
            height: 100%;
        }

        .box {
            display: flex;
        }
        .box_left {
            flex: 0 0 300px;
            background: salmon;
        } 
        .box_center{
            flex: 1;
            background: coral;
        }
        .box_right {
            flex:0 0 300px;
            background: pink;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="box_left">左</div>
        <div class="box_center">中</div>
        <div class="box_right">右</div>
    </div>
</body>
</html>

 

左上中下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        html,body,.box {
            height: 100%;
        }

        .box {
            display: flex;
        }
        .box_left {
            flex: 0 0 300px;
            background: salmon;
        } 
        .box_right {
            flex: 1;
            display: flex;
            flex-direction: column;
        }
        
        .right_top {
            flex: 0 0 50px;
            background: powderblue;
        }
        .right_center {
            flex: 1;
            background: darkgoldenrod;
        }
        .right_bottom {
            flex: 0 0 50px;
            background: darkmagenta;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="box_left">左</div>
        <div class="box_right">
            <div class="right_top">上</div>
            <div class="right_center">中</div>
            <div class="right_bottom">下</div>
        </div>
    </div>
</body>
</html>

 

 

 

 

 

                                                                                                             

 

                                                                                                                                                                                    

                            

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值