当前位置: 首页 > news >正文

关于flex布局

一、布局原理

flex是flexible Box的缩写,意味“弹性布局”,用来为盒状模型提供最大的灵活性,任何一个容器都可以制定为flex布局。通过给父盒子(父元素)添加flex属性,来控制子盒子(子元素)的位置和排列方式

  • 当我们为父元素设为flex布局以后,子元素的float、clear、vertical-align属性将失效。
  • 采用Flex布局的元素,称位flex容器(flex container),简称“容器”。它的所有子元素自动成为容器成员,称位flex项目(flex item),简称“项目”。

二、常见父元素属性

以下6个属性是对父元素设置的:

  • flex-direction:设置主轴的方向
  • justify-content:设置主轴上子元素的排列方式
  • flex-wrap:设置子元素是否换行
  • align-content:设置侧轴上的子元素的排列方式(多行)
  • align-item:设置侧轴上的子元素排列方式(单行)
  • flex-flow:复合属性,相当于同时设置了flex-direction和flex-wrap

2.1 flex-direction 设置主轴的方向 *

主轴和侧轴

在flex布局中,分主轴和侧轴两个方向(也可以叫:行和列、x轴和y轴)

  • 默认主轴方向是x轴方向,水平向右
  • 默认侧轴方式向是y轴方向,水平向下

                                               

 属性值

flex-direction属性决定主轴的方向(即项目排列的方向)

PS:主轴和侧轴是会变化的,就看flex-direction设置谁为主轴,剩下的就是侧轴。(子元素是跟着主轴来排列的)

属性值说明
row从左到右(默认值)
row-reverse从右到左
column从上到下
column-reverse从下到上

2.2 justify-content 设置主轴的子元素排列方式 *

该属性定义了子元素在主轴(默认是x轴)的对齐方式

PS: 一定要先确定好主轴是哪个

属性值说明
flex-start从头部开始  如果主轴是x轴,从左到右(默认值)
flex-end从尾部开始
center在主轴居中对齐
space-around平分剩余的空间
space-between先两边贴边,再平分剩余空间(重要)

2.3 flex-wrap 设置子元素是否换行 *

 默认情况下,子元素都排在一条线上

属性值说明
nowrap不换行(默认值)
wrap换行

2.4 align-items 设置侧轴上的子元素排列方式(单行)*

 该属性定义了子元素在侧轴(默认是y轴)的对齐方式,在子元素为 单行 的时候使用

属性值说明
flex-start从上到下(默认值)
flex-end从下到上
center在侧轴居中对齐
stretch拉伸

 2.5 align-content 设置侧轴上的子元素排列方式(多行)

 该属性定义了子元素在侧轴的对齐方式,在子元素为 多行 的时候使用,在单行下使用是无效的

PS:多行就是子元素出现 换行 的情况

属性值说明
flex-start在侧轴的头部开始排列(默认值)
flex-end在侧轴的尾部开始排列
center在侧轴中间显示
space-around子元素在侧轴平分剩余空间
space-between子元素在侧轴先两边贴边,再平分剩余空间
stretch设置子元素高度平分父元素高度

 align-content 和 align-items 区别:

  • align-items 适用于单行情况,只有上对齐、下对齐、居中和拉伸
  • align-content 适用于多行(即出现 换行 的情况),不仅有上对齐、下对齐、居中拉伸,还增加了 平均分配剩余空间 的属性

总结:

单行找align-items,多行找align-content

2.6 flex-flow 

该属性是 flex-direction和flex-wrap属性的复合属性

flex-flow: row wrap;

三、 常见子元素属性

 以下3个属性是对子元素设置的:

  • flex:设置子元素占的份数
  • align-self:设置子元素自己在侧轴的排列方式
  • order:设置子元素的排列顺序(前后顺序) 

3.1 flex属性  *

该属性定义子元素分配剩余空间,用flex来表示占多少份数 

原本子项是通过设置宽高来分配所占空间的,现在通过flex来设置,flex会相对灵活,可随着页面的缩放而改变(简单的理解就是flex是一个比例而不是一个具体的、固定的值)

.item {/* 默认是0 */flex: 1;
}

 3.2 align-self 设置单个子元素在侧轴上的排列方式

该属性允许单个元素与其他子元素有不一样的对齐方式,可覆盖align-items属性 

默认值是auto,表示 继承父元素的align-items属性

span:nth-child(2) {/* 设置自己在侧轴的排列方式 */align-self: flex-end;
}

 3.3 order 设置子元素的排列顺序

数字越小,排列越靠前,默认值是0

PS:和z-index不一样 

相关文章:

  • scratch代码——游戏开发 【弹簧与反弹】
  • ArrayList的elementData.length和size
  • 双向流热固耦合的收敛
  • (leetcode) 力扣100 4.移动零(两种O(n)方法 双指针)
  • 大模型核心技术及架构解析
  • 2025.4.29_STM32_看门狗WDG
  • 一文读懂 JavaScript 中的深浅拷贝
  • C#学习——类型、变量
  • 学习在暑假避免躺平和内卷(马井堂)
  • 16、路由守卫:设置魔法结界——React 19 React Router
  • 系统安装 ios放同一个u盘 ventory使用+windows安装,双系统互相访问中间盘
  • PPT/WORD如何实现Shift键加鼠标滚轮实现左右滑动
  • 嵌入式复习第一章
  • 拆固态硬盘短接开卡+ as ssd benchmark查看硬盘读写速度
  • 0.5 像素边框实现
  • Arthas在Java程序监控和分析中的应用
  • 智能驾驶与AI智能体的共性、碰撞与未来融合路径
  • 问答:C++如何通过自定义实现移动构造函数和移动赋值运算符来实现rust的唯一所有权?
  • 驱动开发硬核特训 · Day 25 (附加篇):从设备树到驱动——深入理解Linux时钟子系统的实战链路
  • 高德地图线上截图瓦片地图加载不完全
  • 专访|200余起诉讼,特朗普上台100天,美国已进入宪政危机
  • 民生访谈|规范放生活动、提升供水品质……上海将有这些举措
  • 安阳一村支书微信群骂村民被警方行拘,辩称对方先“污蔑造谣”
  • 人民时评:投资于人,促高质量充分就业
  • 四川落马厅官周海琦受审,1000多人接受警示教育
  • 上海市政府常务会议研究抓好稳就业稳企业稳市场稳预期工作,让企业感受温度