flex布局

本文介绍了Flex布局的基本概念,包括如何将元素设置为弹性元素,以及弹性元素的默认内容特性。详细阐述了主轴方向、排列方式、换行控制和侧轴排列等关键属性,同时讲解了弹性父元素和子元素的样式调整方法,为实现更灵活的网页布局提供指导。
摘要由CSDN通过智能技术生成

一、认识flex

1.flex 布局:

一种盒子的布局方式

是一种元素类型

=> block 块元素

=> inline 行内元素

=> inline-block 行内块元素

=> flex 弹性元素

2. 如何把一个元素设置为弹性元素

=> 给该元素设置 display: flex;

注意: 弹性元素不弹自己, 弹子元素

3.认识弹性元素给出的默认内容

1)会生成一个默认主轴

=> 方向: 默认从左到右

2)会生成一个默认侧轴

=> 方向: 默认从上到下

3) 会默认元素排列方式

=> 默认按照主轴方向, 从主轴开始向主轴结束排列

4)默认的子元素尺寸

=> 当子元素没有设置主轴方向长度的时候, 默认按照元素内容来设定

=> 当子元素没有设置侧轴方向长度的时候, 默认按照侧轴长度来设定

5) 默认元素不会换行

=> 如果元素超出父元素范围了, 那么不会换行排列

=> 会默认挤压元素内容区域

=> 挤压到内容大小不在继续挤压, 溢出父元素

4.设置 flex 相关样式

+ 给 flex 元素设置样式调整子元素(弹性父元素)

+ 直接给子元素设置样式来进行单独调整自己(弹性子元素)

二、弹性父元素的属性

1. 主轴方向调整

样式: flex-direction

值:

=> row 主轴从左到右(默认)

=> row-reverse 主轴从右到左

=> column 主轴从上到下

=> column-reverse 主轴从下到上

注意:

=> 当主轴是 row 或者 row-reverse 的时候, 侧轴都是从上到下

=> 当主轴是 column 或者 column-reverse 的时候, 侧轴都是从左到右

2. 主轴方向上元素的排列方式

样式: justify-content

值:

=> flex-start 堆放在开始位置(默认)

=> flex-end 堆放在结束位置

=> center 堆放在居中位置

=> space-between 把所有的空白位置均分在每两个元素之间(假设 6 个元素, 5 个空白)

=> space-around 把所有的空白位置均分放在每个元素两侧(假设 6 个元素, 12 个空白)

=> space-evenly 把所有的空白位置绝对均分(假设 6 个元素, 7 个空白)

3. 允许换行

样式: flex-wrap

值:

=> nowrap 不允许换行(默认)

=> wrap 允许换行

注意:

=> 当元素开启换行以后, 换多少行决定了元素的排列位置

=> 当元素开启换行以后, 会出现多个临时侧轴

-> 每一行会有自己的临时侧轴

4. 元素在侧轴上的排列方式(单行)

指: 在不允许换行的情况下使用

样式: align-items

值:

=> flex-start 放在侧轴开始位置(默认)

=> flex-end 放在侧轴结束位置

=> center 放在侧轴居中位置

注意: 多行的情况下, 可以生效的, 前提: 不能有 align-content 样式

=> 关注: 每一行的临时侧轴

=> flex-start 把每一行元素放在临时侧轴的开始位置

=> flex-end 把每一行元素放在临时侧轴的结束位置

=> center 把每一行元素放在临时侧轴的居中位置

5. 元素在侧轴上的排列方式(多行)

指: 在允许换行的情况下使用(单行情况不生效)

关注: 主要侧轴上(和每一行的临时侧轴没有关系)

样式: align-content

值:

=> flex-start 堆放在侧轴开始位置

=> flex-end 堆放在侧轴结束位置

=> center 堆放在侧轴居中位置

=> space-between 把所有的空白位置均分在每两行元素之间(假设 3 行元素, 2 个 空白)

=> space-around 把所有的空白位置均分放在每行元素两侧(假设 3 行元素, 6 个 空白)

=> space-evenly 把所有的空白位置绝对均分(假设 3 行元素, 4 个 空白)

三、弹性子元素的属性

注意: 直接设置到弹性子元素身上

1. 占有剩余空间的比例

样式: flex

值: 一个数字(没有单位)

计算方式:

=> 主轴方向的整体长度 减去 设置了固定宽度的元素 (800 - 400 === 400)

=> 计算所有书写了 flex 样式的元素的数字的总和当做分母 (10 + 30 === 40)

=> 每一个元素的 flex 的值就是 分子

注意: 当你没有换行, 并且元素出界以后, 开始挤压的时候, 优先挤压没有设置固定宽度的元素

2. 排序

样式: order

值: 一个数字(没有单位)

意义: 谁大, 谁排在后面

3. 自己单独在侧轴上的排列方式

注意:

=> 如果是单行

=> 如果是多行, 按照每一行的临时侧轴来进行调整

样式: align-self

值:

=> flex-start 放在侧轴开始位置

=> flex-end 放在侧轴结束位置

=> center 放在侧轴居中位置

四、弹性盒子注意

1. 弹性元素修改的是 子一级元素 的排列方式

2. 当该元素没有子元素的时候, 可以弹 文本

<div>
    文本内容
</div>

div {
  width: 300px;
  height: 300px;
  border: 1px solid #333;
  /* 弹性元素 ===> 文字垂直居中*/
  display: flex;
  justify-content: center;
  align-items: center;
}

3. 弹性元素默认不换行

4. 弹性元素会触发 BFC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值