Flex布局使用

Flex布局

1、理解

1.1 为何使用

​ 有些布局的垂直居中实现不易,所有使用flex布局来实现

1.2 指定为Flex布局:
  • 任何容器 ------ display:flex;

  • 行内元素 ------ display:inline-flex;

  • Webkit 内核的浏览器,必须加上-webkit前缀。

    .box{
      display: -webkit-flex; /* Safari */
      display: flex;
    }
    
1.3 使用flex后失效元素

​ 设为 Flex 布局以后,子元素的floatclearvertical-align属性将失效。

2、目前常用四种场景:

  • 定义好宽高的子元素,左排列

  • 子元素,左排列,且均分父元素空间

  • 多个子元素,分布在父元素的两边

  • 多个元素居于正中间

3、属性解释

属性解释
gapgap属性属于grid布局中,用来设置网格行与列之间的间隙。(该属性是 row-gap 和 column-gap 的简写形式)
3.1 flex-direction属性----决定主轴排序方向
说明
flex-direction: row主轴为水平方向,起点在最左端,正序。在这里插入图片描述
flex-direction: row-reverse主轴为水平方向,起点在最右端,倒序在这里插入图片描述
flex-direction: column主轴为水平方向,正序,元素独占一行(且没有换行属性时不会进行换行,会溢出)在这里插入图片描述
flex-direction: column-reverse主轴为垂直方向,倒序,元素独占一行(且没有换行属性时不会进行换行,会溢出)在这里插入图片描述
3.2 flex-wrap属性----换行
说明
flex-wrap: nowrap默认不换行(不换行会造成溢出屏幕的情况)在这里插入图片描述
flex-wrap: wrap换行,第一行在上在这里插入图片描述
flex-wrap: wrap-reverse换行,第一行在下在这里插入图片描述
3.3 flex-flow属性----flex-direction和flex-wrap的结合体
.box {
  flex-flow: <flex-direction> <flex-wrap>;
}
代码举例
.div{ flex-flow: row-reverse wrap-reverse; }效果:倒序、第一行在下
3.4 justify-content属性----主轴上的对齐方式
说明
justify-content: flex-start左对齐在这里插入图片描述
justify-content: flex-end右对齐在这里插入图片描述
justify-content: center居中
justify-content: space-between两端对齐,项目间间隔相等在这里插入图片描述
justify-content: space-around每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。在这里插入图片描述
3.5 align-items属性----交叉轴上如何对齐
说明
flex-start在这里插入图片描述交叉轴的起点对齐。
flex-end在这里插入图片描述交叉轴的终点对齐。
center在这里插入图片描述交叉轴的中点对齐。
baseline在这里插入图片描述项目的第一行文字的基线对齐
stretch(默认值)在这里插入图片描述如果项目未设置高度或设为auto,将占满整个容器的高度。
3.6 align-content属性----定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
说明(截图中的例子的主轴为行row)
flex-start在这里插入图片描述交叉轴的起点对齐
flex-end在这里插入图片描述与交叉轴终点对齐
center在这里插入图片描述与交叉轴中点对齐
space-between在这里插入图片描述与交叉线两端对齐,轴线之间的间隔平均分布
space-around在这里插入图片描述每根轴线两侧的间隔都相等,轴线之间的间隔比轴线与边框的间隔大一倍。
stretch(默认值)在这里插入图片描述轴线占满整个交叉轴。

表格中截图的源码:

 <style>
     .grid-container{
         border: 5px solid rgb(48, 159, 211);
         height: 150px;
         width: 150px;
         display: flex;
         flex-flow: row wrap;
         align-content: ......;
     }
     .item{
         padding: 10px 10px 10px 10px;   
         border: 1px solid rgb(235, 115, 115);
     }
 </style>
 
 <div class="grid-container">
     <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 class="item">6</div>
     <div class="item">7</div>
     <div class="item">8</div>
     <div class="item">9</div>
 </div>
3.7 align-items和align-content相同和不同

3.7.1 align-items和align-content相同点:

  • 都是设置交叉轴上垂直对齐的属性

3.7.2 align-items和align-content区别:

  • align-items仅仅对主轴为一行的容器项目有效,align-content仅仅对交叉轴上有剩余空间且有多行项目时有效

  • align-items属性把每一个项目作为一个整体,align-content属性是把整体项目作为一个整体

注:交叉轴的含义 — 弹性容器的交叉轴和主轴垂直

a、当主轴flex-direction值为行(row 或者row-reverse)交叉轴就是从上至下的垂直走向

b、当主轴flex-direction值为列(column 或者column-reverse)交叉轴就是水平走向

4、项目中常使用属性

4.1 order属性----定义元素排序

order属性:定义项目的排序顺序。数值越小,排列越向前,默认值为0

属性说明
在css中使用order属性在这里插入图片描述eg: .item { order: 数值; }
4.2 flex-grow属性----定义项目的放大比例

flex-grow属性:定义项目的放大比例,默认为0,值为0时,有剩余空间也不放大

属性说明
在css中使用 flex-grow属性在这里插入图片描述eg:.item { flex-grow: 数值; /* default 0 */ }

注:

a、数值大的情况下,数值越大占据的剩余空间越多向

b、当flex-grow属性均为1时,若有剩余空间则将均匀的分配剩余空间

c、当flex-grow属性为2,其他项目都为1,则为2的分配的空间将比其他的多一倍

4.3 flex-shrink属性----项目缩小比例

flex-shrink属性:定义项目的缩小比例,默认为1,当空间不足时项目将缩小

属性说明
在css中使用 flex-shrink属性为在代码中实现

注:

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。

当一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

4.4 flex-basis属性----定义定义了在分配多余空间之前,项目占据的主轴空间
4.5 flex属性----flex-grow、flex-shrink、flex-basis的简写
4.6 align-self属性----允许单个项目与其他项目不同的对齐方式

align-self属性:允许单个项目和其他项目有不一样的对齐方式,可以覆盖align-items属性

默认值为auto时,表示继承父元素align-items属性,当没有父元素时为stretch

属性说明
在css中使用 flex-shrink属性在这里插入图片描述eg: .item4{ align-self: flex-end; }

借鉴链接:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值