flex布局入门

本文介绍了Flex布局的特点、兼容性和核心概念,包括容器属性如flex-direction、flex-wrap、flex-flow、justify-content、align-items和align-content,以及子元素属性如order、flex-grow、flex-shrink、flex-basis和align-self。通过实例演示了各种属性的效果,强调动手实践是快速掌握Flex布局的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

flex - 弹性布局

特点:简单 快捷 方便

兼容性: 现代浏览器对其兼容性已经很好,老古董ie 除外
在这里插入图片描述

flex相关概念示意图
在这里插入图片描述
container父容器里有三个子元素flex-item。当给父容器设置display:flex;直接子元素就有布局模型了,上图中还有主轴和纵轴分别是布局的一个方向,后面的属性会详细说到。

先展示一下具体概念:

容器属性:

属性名属性的含义属性值
容器属性flex-direction子元素的排列方向row,row-reverse,column,column-reverse
容器属性flex-wrap容器中子元素排列不下时 采用的换行方式nowrap,wrap,wrap-reverse
容器属性flex-flowflex-direction 及 flex-wrap的属性简写默认值 row nowrap
容器属性justify-content子元素在主轴上的排列方式flex-start,flex-end,center,space- between,space-around
容器属性align-items子元素在另一轴上的排列方式flex-start,flex-end,center,baseline,stretch
容器属性align-content多跟轴线的对其方式flex-start,flex-end,center,space- between,space-around,stretch
子元素属性order控制子元素的排列顺序0,1… 数字越小越靠前
子元素属性flex-grow当有多余空间时子,子元素的放大比例,默认0,不放大0,1,2…
子元素属性flex-shrink当空间不足时,子元素的缩小比例,默认1,进行缩小1,0
子元素属性flex-basis子元素在容器中占据的空间长度值,默认auto
子元素属性flexflex-grow,flex-shrink, flex-basis 合并写法默认值 0 1 auto
子元素属性align-self单个子元素独特的对齐方式同align-items 会覆盖 align-item

基本概念结束:

now !!!

code && demo
flex-direction

/*css*/
*{
   margin: 0;
     padding: 0;
 }
 .content{
     width: 800px;
     height: 500px;
     border: 1px solid #11caff;
     display: flex;
     flex-direction: row;
 }
 .item{
     border: 1px solid #000;
 }

/*dom*/
<div class="content">
   <div class="item">item1</div>
    <div class="item">item2</div>
    <div class="item">item3</div>
</div>

在这里插入图片描述
上述css flex-direction: row; 替换成 flex-direction: row-reverse;
在这里插入图片描述
上述css flex-direction: row-reverse; 替换成 flex-direction: column;
在这里插入图片描述
上述css flex-direction: column; 替换成 flex-direction: column-reverse;
在这里插入图片描述
flex-wrap: nowrap|wrap|wrap-reverse

/*css*/
*{
  margin: 0;
     padding: 0;
 }
 .content{
     width: 800px;
     height: 500px;
     border: 1px solid #11caff;
     display: flex;
     flex-direction: row;
     flex-wrap: nowrap;
 }
 .item{
     width: 300px;
     border: 1px solid #000;
 }
/*dom*/
<div class="content">
   <div class="item">item1</div>
    <div class="item">item2</div>
    <div class="item">item3</div>
</div>

在这里插入图片描述
上述代码 flex-wrap: nowrap; 替换为 flex-wrap: wrap;

在这里插入图片描述
上述代码 flex-wrap: wrap; 替换成 flex-wrap: wrap-reverse;

在这里插入图片描述
flex-flow: flex-direction flex-wrap 的简写;
运行结果图 略

justify-content: flex-start|center|flex-end|space-between|space-around;

/css/
*{
margin: 0;
padding: 0;
}
.content{
width: 800px;
height: 500px;
border: 1px solid #11caff;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
}
.item{
border: 1px solid #000;
}
/dom/

item1
item2
item3
``` ``` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190529110840346.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NjAxMDU2,size_16,color_FFFFFF,t_70) 上述代码 justify-content: flex-start; 替换成 justify-content: center; ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190529111246266.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NjAxMDU2,size_16,color_FFFFFF,t_70) 上述代码 justify-content: center; 替换成 justify-content: flex-end; ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190529111517402.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1NjAxMDU2,size_16,color_FFFFFF,t_70) 上述代码justify-content: flex-end; 替换成 justify-content: space-between;

在这里插入图片描述
上述代码替换成 justify-content: space-around;

在这里插入图片描述
注意: 上述代码替换成 justify-content:space-evenly;
but 在安卓上存在兼容性问题
在这里插入图片描述
容我喝口水缓一缓!!!

align-items: flex-start|flex-end|center|baseline|stretch;

/*css*/
*{
   margin: 0;
    padding: 0;
}
.content{
    width: 800px;
    height: 500px;
    border: 1px solid #11caff;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: space-around;
    align-items: flex-start;
}
.item1{
    border: 1px solid #000;
    height: 100px;
}
.item2{
    border: 1px solid #000;
    height: 150px;
}
.item3{
    border: 1px solid #000;
    height: 200px;
}
/*dom*/
<div class="content">
     <div class="item1">item1</div>
     <div class="item2">item2</div>
     <div class="item3">item3</div>
 </div>

在这里插入图片描述

上述代码 align-items: flex-start; 改为 align-items: flex-end;
在这里插入图片描述
上述代码 align-items: flex-end; 改为 align-items: center;
在这里插入图片描述
上述代码 align-items: center; 改为 align-items: baseline;

在这里插入图片描述
上面代码改为

/*css*/
 *{
      margin: 0;
       padding: 0;
   }
   .content{
       width: 800px;
       height: 500px;
       border: 1px solid #11caff;
       display: flex;
       flex-direction: row;
       flex-wrap: nowrap;
       justify-content: space-around;
       align-items: stretch;
   }
   .item1{
       border: 1px solid #000;
   }
   .item2{
       border: 1px solid #000;
       font-size: 50px;
   }
   .item3{
       border: 1px solid #000;
   }
   /*dom*/
   <div class="content">
       <div class="item1">item1</div>
        <div class="item2">item2</div>
        <div class="item3">item3</div>
    </div>

运行结果:
在这里插入图片描述
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
align-content 只对多行有效果 align-items 对多行和单行都有效果
接下来详细看一下 align-content

/**css**/
 *{
    margin: 0;
      padding: 0;
  }
  .content{
      width: 800px;
      height: 500px;
      border: 1px solid #11caff;
      display: flex;
      flex-direction: row;
      flex-wrap: wrap;
      justify-content: flex-start;
      align-content: center;
  }
  .item1{
      width: 500px;
      border: 1px solid #000;
  }
  .item2{
      width: 200px;
      border: 1px solid #000;
      font-size: 50px;
  }
  .item3{
      width: 200px;
      border: 1px solid #000;
  }

/*dom*/
 <div class="content">
    <div class="item1">item1</div>
     <div class="item2">item2</div>
     <div class="item3">item3</div>
 </div>

在这里插入图片描述
上述代码 align-content替换为 align-content: flex-end;
在这里插入图片描述
上述代码 align-content替换为 align-content: center;
在这里插入图片描述
上述代码 align-content替换为 align-content: stretch;
在这里插入图片描述
上述代码 align-content替换为 align-content: space-between;
在这里插入图片描述
上述代码 align-content替换为 align-content: space-around;

在这里插入图片描述
接下来 是子元素属性(简单说一下)很容易理解
order 属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
flex-grow 属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
flex-shrink 属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
flex-basis 属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
flex 为 flex-grow,flex-shrink,flex-basis 的合并写法。
align-self :属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

align-self属性举个栗子

/*css*/
 *{
     margin: 0;
       padding: 0;
   }
   .content{
       width: 800px;
       height: 500px;
       border: 1px solid #11caff;
       display: flex;
       flex-direction: row;
       flex-wrap: wrap;
       justify-content: flex-start;
       align-items: flex-start;
   }
   .item1{
       width: 300px;
       border: 1px solid #000;
   }
   .item2{
       width: 200px;
       border: 1px solid #000;
       font-size: 50px;
       align-self: center;
   }
   .item3{
       width: 200px;
       border: 1px solid #000;
   }
   /*dom*/
   <div class="content">
      <div class="item1">item1</div>
       <div class="item2">item2</div>
       <div class="item3">item3</div>
   </div>

在这里插入图片描述
以上是flex 布局的基础知识

忠告: 要更快的掌握 请动手实践。。。

补充一张图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值