CSS基础 ---flex弹性布局

CSS基础—flex弹性布局

一、了解flex布局

1.1 什么是flex布局

flex布局又叫弹性布局,顾名思义弹性布局可以使盒子变得有弹性可以伸缩,这样说不容易理解,直接进入实例来了解flex布局

1.2 弹性布局的使用场景

简单来说,弹性布局可以使盒子变得有弹性,可以让盒子可以进行伸缩,
想让一个盒子内的元素水平排列,并且均匀分布就可以使用flex布局
flex布局也可以使元素竖直排列,分布方式可以自己随意选择,来看看flex布局的属性,来更清楚他的作用

1.3 flex布局怎么使用

flex是display的一个属性,可以使用在任意一个盒子上,而盒子内部的元素就会根据flex布局来排列

        <div class="box">
               ...
        </div>

给父元素一个display:flex;那这个盒子就是弹性布局

     .box{
         display:flex;
     }

接下来来看看flex的属性都有什么作用

二、flex布局的属性

2.1 flex-direction

flex-direction是指定弹性盒子内部元素的排列方向
属性值为:column | row | column-reverse | row-reverse

在这里插入图片描述

   row                     从左向右   默认值  
   row-reverse             从右向左
   column                  从上向下
   column-reverse          从下向上

2.2 flex-wrap

flex-wrap是当一行放不下这么多元素时选择是否换行
有三个属性: nowrap 不换行(默认) wrap 换行 wrap-reverse 第一行在下方

在这里插入图片描述

2.3 justify-content

justify-content是指定在排列方向上元素的分布情况
属性为:flex-start | flex-end | center | space-between | space-around

用一张图来演示这些属性的区别

在这里插入图片描述

 flex-start               盒子起始位置对齐  
 flex-end                 盒子结束位置对齐  
 center                   盒子居中对齐  
 space-between            元素均匀间隔分布  
 space-around             元素均匀间隔分布两端有间隔一半的间隙

2.4 align-items

align-items的作用是当你横向排列时,元素竖直方向的对齐方式

属性为:flex-start | flex-end | center | stretch | baseline

在这里插入图片描述

2.5 flex-grow || flex-shrink || flex-basis

flex-grow 是用在子盒子的属性,是子盒子占父盒子的比例,和其他子盒子相比,例如:每个子盒子都是flex-grow:1,那就所有盒子的比例相同,

flex-shrink是当盒子被缩放的时候,如果flex-shrink:0,则不进行缩放,其他属性按比例缩放

flex-basis属性定义了再分配多余空间之前项目占据的主轴空间

2.6 flex

flex属性是 2.5 三个属性的简写

    flex:flex-grow  || flex-shrink || flex-basis
    flex: 0 1 auto

2.7 align-self

align-self属性允许单个元素与其他元素有不一样的对齐方式,可覆盖align-items的属性,默认值为auto

align-self的属性比align-items多一个auto 默认值

在这里插入图片描述

当你想让一个元素单独排序的时候,可以给元素加上align-self属性,可以覆盖父元素的align-items属性

2.8 align-content

align-content当元素不止一行的时候使用,比如使用了flex-wrap:wrap,换行了之后可以使用
举个经典案例骰子的

html

    <div class="box">
        <div class="column">
             <span class="item"></span>
             <span class="item"></span>
             <span class="item"></span>
       </div>
       <div class="column">
             <span class="item"></span>
             <span class="item"></span>
             <span class="item"></span>
       </div>
    </div>

在这里插入图片描述

.box{
    display: flex;
    flex-wrap: wrap;
    align-content: space-between;
 }
 .column{
     display:flex;
     justify-content: space-between;
 }

用法就是当一个弹性盒子里有两个或多个一行放不下的元素的时候,就可以使用align-content来规定子盒子之间的排列方式

三、flex布局的具体用例

3.1 网格布局

最简单的网格布局,就是平均分布

在这里插入图片描述

    html    
    <div class="Grid">
        <div class="Grid-cell"></div>
        <div class="Grid-cell"></div>
        <div class="Grid-cell"></div>
    </div>
    
    css
    .Grid{
        display:flex;
    }
    .Grid-cell{
        flex:1
    }

只要给子元素加上flex:1;就会平均分配父盒子的空间

3.2 百分比布局

在这里插入图片描述

和网格布局基本一致,就是设定好某一个或多个子元素的大小,其余部分被一个子元素占满

    html    
    <div class="Grid">
        <div class="Grid-cell Grid-cell-1"></div>
        <div class="Grid-cell Grid-cell-2"></div>
        <div class="Grid-cell"></div>
    </div>
    
    css
    .Grid{
        display:flex;
    }
    .Grid-cell{
        flex:1
    }
    .Grid-cell-1{
        flex: 0 0 50%
    }.Grid-cell-1{
        flex: 0 0 33.3333%
    }

原理就是:给每个子元素都加上了flex:1,使其平均分配,但当你再给某个子元素加上他的固定大小flex:0 0 33.3333%,33.3333%那他就会固定占满三分之一,其余空间被另一个元素占满

3.3 输入框的布局

输入框的布局也可以使用flex布局,举个简单的例子

在这里插入图片描述

当一个输入框有前面的图标中间的输入框和后面的提交三部分时,使用flex布局很合适,给中间的子元素加上属性flex:1;其余的不加,中间就会占满去掉前后剩余的空间,可以看情况使用

3.4 悬挂式布局

就是当一个盒子里有时候需要加入一张图片或,某个元素时,但是不一定会加的情况,也可以使用,直接看图

在这里插入图片描述

当有图片时自动将文本挤过去也可以使用flex布局,给文本的元素上加上flex:1;当你插入一个图片元素时,他会自动占满剩余部分的全部

3.5 底栏的固定

很多时候无论是大布局,还是小盒子里的小布局,都会有一个需求,就是我想让他一直在底部,不管上面的内容满没满,就乖乖待在底部,这时候你使用定位又可能会造成一些麻烦,flex布局就可以派上用场,也需要视情况而定,

在这里插入图片描述

当你想要一个内容固定在底部,很常见,可以使用flex布局,给中间元素加上flex:1;占满剩余内容,再给上flex-derection:column;让他上下排列,就可以使最下面的元素一直在底部了

本章完


版权声明:本文为m0_52173534原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。