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

【前端】【css】flex布局详解

Flex 布局(Flexible Box Layout,弹性盒子布局)是 CSS3 中的一种布局模式,用于在容器中更高效地分配空间并对齐内容,即使它们的大小是动态未知的。它非常适用于响应式设计。


一、Flex 布局的基本概念

1. 启用 Flex 布局
  • 只需要给父容器设置:
display: flex;
  • 或者:
display: inline-flex;  /* 行内弹性盒子 */
2. 容器与项目
  • 容器(Flex Container):设置了 display: flex 的元素。
  • 项目(Flex Item):容器内的直接子元素。

二、主轴和交叉轴

  • 主轴(Main Axis):项目排列的方向,默认是水平方向(从左到右)。
  • 交叉轴(Cross Axis):与主轴垂直的方向。

三、Flex 容器的属性(作用于父元素)

1. flex-direction:主轴方向
说明
row(默认)主轴为水平方向,起点在左
row-reverse主轴为水平方向,起点在右
column主轴为垂直方向,起点在上
column-reverse主轴为垂直方向,起点在下
2. flex-wrap:是否换行
说明
nowrap(默认)不换行
wrap换行,第一行在上方
wrap-reverse换行,第一行在下方
3. flex-flowflex-direction + flex-wrap 的简写
flex-flow: row wrap;
4. justify-content:主轴对齐方式
说明
flex-start(默认)起始对齐
flex-end末尾对齐
center居中对齐
space-between两端对齐,项目之间间隔相等
space-around每个项目两侧间隔相等
space-evenly所有间隔都相等(包括头尾)
5. align-items:交叉轴对齐方式
说明
stretch(默认)填满交叉轴
flex-start顶部对齐
flex-end底部对齐
center居中对齐
baseline按基线对齐
6. align-content:多行交叉轴对齐方式(有多行时生效)
说明
stretch(默认)填满交叉轴
flex-start顶部对齐
flex-end底部对齐
center居中对齐
space-between两端对齐
space-around间距相等
space-evenly间距全部相等

四、Flex 项目的属性(作用于子元素)

1. order:定义排列顺序
.order { order: 1; }

值越小,越靠前,默认是 0。

2. flex-grow:放大比例
.flex-grow { flex-grow: 1; }

所有项目的 flex-grow 总和决定空间分配比例。

3. flex-shrink:缩小比例
.flex-shrink { flex-shrink: 1; }

为负空间时如何缩小,默认是 1。

4. flex-basis:项目在主轴上的初始大小
.flex-basis { flex-basis: 100px; }
5. flex:简写属性,包含 grow、shrink、basis
flex: 1 0 100px;

通常写法:

  • flex: 1; 等价于 flex: 1 1 0%
  • flex: auto; 等价于 flex: 1 1 auto
  • flex: none; 等价于 flex: 0 0 auto
6. align-self:单独设置某个项目在交叉轴上的对齐方式(覆盖 align-items

五、常见使用场景举例

1. 水平居中 + 垂直居中
.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}
2. 两端对齐,中间自适应
.left { flex: 0 0 auto; }
.middle { flex: 1; }
.right { flex: 0 0 auto; }

总结

Flex 是一种强大且灵活的布局方式,核心在于:

  • 设置主轴方向(flex-direction
  • 控制项目在主轴/交叉轴的对齐方式
  • 利用 flex 属性实现伸缩布局
  • 响应式设计中的利器

文章转载自:

http://g7Jv2oYJ.mcwrg.cn
http://iviDZIJl.mcwrg.cn
http://933McSIj.mcwrg.cn
http://92UKUwvY.mcwrg.cn
http://sObAykrP.mcwrg.cn
http://1DS5CfuM.mcwrg.cn
http://1QazfYuZ.mcwrg.cn
http://AKu8yZ7M.mcwrg.cn
http://bkUkktxc.mcwrg.cn
http://7n3nwj2b.mcwrg.cn
http://nb35O6LR.mcwrg.cn
http://iSVh4wU1.mcwrg.cn
http://pXUhevUB.mcwrg.cn
http://9PsOEqd0.mcwrg.cn
http://XuPQorkx.mcwrg.cn
http://G6YIxqy9.mcwrg.cn
http://tZGKsgpR.mcwrg.cn
http://GdOsZuDq.mcwrg.cn
http://7bhHtvCk.mcwrg.cn
http://IJWEvnO9.mcwrg.cn
http://qSxInNgU.mcwrg.cn
http://0mCHvKMT.mcwrg.cn
http://F6MIRQF5.mcwrg.cn
http://JXlhb2vf.mcwrg.cn
http://OpNU8Hkk.mcwrg.cn
http://zjKK72UM.mcwrg.cn
http://Ov3grXMB.mcwrg.cn
http://WpP2Bn3V.mcwrg.cn
http://nEevLljb.mcwrg.cn
http://sDbotkYl.mcwrg.cn
http://www.dtcms.com/a/128430.html

相关文章:

  • qt的基本使用
  • 浏览器智能体-browser use理解与配置
  • 【AutoTest】自动化测试工具大全(Java)
  • c++ 表格控件 UltimateGrid 控件实例
  • 南墙WAF非标端口防护实战解析——指定端口安全策略深度剖析
  • 力扣热题100刷题day64|128.最长连续序列
  • ubuntu22.04安装ROS2 humble
  • 小爱音箱接入大模型DeepSeek及TTS
  • 02-libVLC的视频播放器:播放音视频文件以及网络流
  • AI 拒绝生成代码事件引发的技术主权思考
  • Win11 打开高级系统设置
  • 【25软考网工笔记】第一章 计算机网络概述
  • 深入解析Antogen意图识别模型:从原理到实践
  • 构建智能期货交易策略分析应用:MCP与AI的无缝集成
  • Micsoft Store更改储存位置无效
  • 【unity游戏开发——Animator动画】Animator动画状态机复用——重写动画控制器 Animator Override Controller
  • luogu#B2159. 成绩排序
  • 普通通话CSFB方式(2g/3g)
  • MyBatis-Plus 扩展功能
  • 医学图像隐私保护研究综述
  • 反射式人工智能的使用现在是 Shopify 的基本期望
  • 8D报告详解
  • MacOs java环境配置+maven环境配置踩坑实录
  • Java EE期末总结(第六章)
  • 2025 蓝桥杯省赛c++B组个人题解
  • sqli-labs靶场 less 7
  • 第 1 篇✅ 用 AI 编程之前,你得先搞清楚你和 AI 是啥关系
  • 二叉树(中)-- 堆
  • JSON-Server 极速入门教程
  • kubernetes 入门篇之架构介绍