flex布局方法学习

目录
基本概念
常用属性
justify-content
align-items

总结

基本概念
flex 是 flexible box 的缩写,意思为 “弹性盒子”
任何一个 html 元素,都可以指定为 display:flex 完成弹性布局

容器和项目
容器 (flex container): 需要添加弹性布局的父元素,被设置为 display:flex 属性的元素
项目 ( flex item): 弹性布局容器中的每一个子元素

两个基本方向
主轴 (flex direction): flex item 可以纵向排列,也可以横向排列 (主轴默认水平)
交叉轴: 与主轴垂直的另一方向,称为交叉轴

flex 布局的本质是给父盒子添加 display:flex 属性,来控制子盒子的位置和排列方式

注意: 当父元素设置为 display: flex 之后,子元素的 float,clear,vertical-align 都会失效
在这里插入图片描述
常用属性
justify-content
设置主轴上的子元素排列方式 (使用之前一定要确定好主轴是哪个方向)

属性取值

取值 描述
flex-start 默认值,项目位于容器的开头
flex-end 项目位于容器的结尾
center 项目位于容器中央
space-between 项目在行与行之间留有间隔
space-around 项目在行之前、行之间、行之后留有间隔

举例:

<body>
    <div id="d1">
        <span>1.花花</span>
        <span>2.大大</span>
        <span>3.小小</span>
    </div>
</body>

未指定 justify-content 时
(默认按照从左到右的方向布局)

<style>
    #d1{
        width: 100%;
        height: 200px;
        background-color: thistle;
        display: flex;
} 
       
    #d1>span{
         background-color: yellow;
        width: 60px;
        height: 100px;
} 
       
</style>

在这里插入图片描述

设置 justify-content: flex-end
(此时元素都排列到右侧了)

<style>
    #d1{
        width: 100%;
        height: 200px;
        background-color: thistle;
        display: flex;
        justify-content: flex-end;
} 
        
    #d1>span{
        background-color: yellow;
        width: 60px;
        height: 100px;
} 
       
</style>

在这里插入图片描述
设置 jutify-content: center
(此时元素居中排列)

<style>
    #d1{
        width: 100%;
        height: 200px;
        background-color: thistle;
        /* 父级元素设置弹性布局 */
        display: flex;
        justify-content: center;
  } 
        
    
    #d1>span{
        background-color: yellow;
        width: 60px;
        height: 100px;
  } 
        
</style>

在这里插入图片描述
设置 justify-content: space-between
(先两边元素贴近边缘, 再平分剩余空间)

<style>
    #d1{
    width: 100%;
        height: 200px;
        background-color: thistle;
        /* 父级元素设置弹性布局 */
        display: flex;
        justify-content: space-between;
    } 
        
    
    #d1>span{
        background-color: yellow;
        width: 60px;
        height: 100px;
} 
    
</style>

在这里插入图片描述

设置 justify-content: space-around
(平分剩余空间)

<style>
    #d1{
       width: 100%;
        height: 200px;
        background-color: thistle;
        /* 父级元素设置弹性布局 */
        display: flex;
        justify-content: space-around;
   } 
     
    #d1>span{
        background-color: yellow;
        width: 60px;
        height: 100px; 
  } 
         
</style>

在这里插入图片描述

align-items
设置侧轴上的元素排列方式
在 justify-content: 中,我们是让元素按照主轴的方向排列,我们也可以指定元素按照侧轴方向排列

属性取值

取值 描述
stretch 默认值,行拉伸以占据剩余空间
center 朝着弹性容器中央对行打包
flex-start 朝着弹性容器开头对行打包
flex-end 朝着弹性容器结尾对行打包
space-between 行均匀分布在弹性容器中
space-around 行均匀分布在弹性容器中,两端各占一半

align-items 只能针对单行元素来实现,如果有多行元素,就需要使用 item-contents

stretch
这个是 align-content 的默认值,意思是如果子元素没有被显式指定高度,那么就会填充满父元素的
高度

举例:

<div id="d1">
    <span>1.花花</span>
    <span>2.大大</span>
    <span>3.小小</span>
</div>

center

<style>
     #d1{
        width: 100%;
        height: 200px;
        background-color: thistle;
        /* 父级元素设置弹性布局 */
        display: flex;
        align-items: center;
   } 
      
    #d1>span{
        background-color: yellow;
        width: 60px;
        height: 100px;
  }   
</style>

在这里插入图片描述

flex-start

<style>
     #d1{
        width: 100%;
        height: 200px;
        background-color: thistle;
        /* 父级元素设置弹性布局 */
        display: flex;
        align-items: flex-start;
  } 
     
    #d1>span{
        background-color: yellow;
        width: 60px;
        height: 100px;  
} 
    
</style>

在这里插入图片描述

flex-end :交叉轴的终点对齐。

<style>
     #d1{
        width: 100%;
        height: 200px;
        background-color: thistle;
        /* 父级元素设置弹性布局 */
        display: flex;
        align-items: flex-end;
      }  
       
    #d1>span{
        background-color: yellow;
        width: 60px;
        height: 100px; 
    } 
        
</style>

在这里插入图片描述

**center: 交叉轴的中点对齐。
举例:

<style>
     #d1 {
       width: 100%;
        height: 200px;
        background-color: thistle;
        /* 父级元素设置弹性布局 */
        display: flex;
        align-items: center;
     }
       
    #d1>span{
      background-color: yellow;
        width: 60px;
        height: 100px;  
    } 
</style>

在这里插入图片描述

baseline:项目的第一行文字的基线对齐。
举例:

<style>
     #d1{
        width: 100%;
        height: 200px;
        background-color: thistle;
        /* 父级元素设置弹性布局 */
        display: flex;
        align-items: baseline;
     } 
    
    #d1>span{
        background-color: yellow;
        width: 60px;
        height: 100px;
    }   
</style>

在这里插入图片描述

总结
① 给父容器添加display: flex/inline-flex 属性,使容器内容采用弹性布局显示,而不遵循常规文档流的显示方式;
② 容器添加弹性布局后,仅仅是容器内容采用弹性布局,而容器自身在文档流中的定位方式依然遵循常规文档流;
③ display:flex; 容器添加弹性布局后,显示为块级元素;
display:inline-flex; 容器添加弹性布局后,显示为行级元素;
④ 设为 flex布局后,子元素的float、clear和vertical-align属性将失效;但是position属性,依然生效

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒二哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值