CSS回顾-Flex弹性盒布局

embedded/2025/4/2 7:43:10/

弹性盒布局(Flexible Box Layout,简称 Flex)是 CSS3 中革命性的布局方案,它能以更简单的方式实现复杂的网页布局。本文用生活化比喻+代码案例,带你轻松掌握 Flex 布局的所有核心知识点。


一、Flex 布局的本质:玩具收纳箱

想象一个收纳箱(Flex 容器)里摆放着多个玩具(Flex 项目),你可以通过 2 个轴控制玩具的排列方式:

  • 主轴(Main Axis):默认水平方向(可调整)
  • 交叉轴(Cross Axis):与主轴垂直的方向

img

如上图所示,容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size

二、容器属性:控制整体布局

1. display: flex

css">.container {display: flex; /* 或 inline-flex */
}

作用:声明当前元素为弹性容器,子元素自动成为弹性项目

2. flex-direction:主轴方向

css">.container {flex-direction: row | row-reverse | column | column-reverse;
}

效果

  • row(默认):水平排列 →
  • row-reverse:水平反向排列 ←
  • column:垂直排列 ↓
  • column-reverse:垂直反向排列 ↑

3. flex-wrap:换行控制

css">.container {flex-wrap: nowrap | wrap | wrap-reverse;
}
  • nowrap(默认):不换行(项目会压缩)
  • wrap:自动换行(类似书籍排版)
  • wrap-reverse:反向换行

4. flex-flow:方向+换行简写

css">.container {flex-flow: column wrap; /* direction + wrap */
}

5. justify-content:主轴对齐

css">.container {justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;
}

效果

  • flex-start:靠左对齐
  • flex-end:靠右对齐
  • center:居中
  • space-between:两端对齐
  • space-around:项目两侧等距
  • space-evenly:间距均匀

6. align-items:交叉轴对齐(单行)

css">.container {align-items: stretch | flex-start | flex-end | center | baseline;
}
  • stretch(默认):拉伸填满高度
  • flex-start:向上对齐
  • flex-end:向下对齐
  • center:居中对齐
  • baseline:基线对齐(文字底部对齐)

7. align-content:交叉轴对齐(多行)

css">.container {align-content: stretch | flex-start | flex-end | center | space-between | space-around;
}
  • stretch(默认):拉伸填满高度
  • flex-start:向上对齐
  • flex-end:向下对齐
  • center:居中对齐
  • space-between:两端对齐
  • space-around:项目两侧等距

注意:仅当有多行内容时生效

三、项目属性:控制单个元素

1. order:排序优先级

css">.item {order: 5; /* 默认0,数值越小越靠前 */
}

作用:通过数值控制显示顺序

2. flex-grow:放大比例

css">.item {flex-grow: 2; /* 默认0(不放大) */
}

计算规则:剩余空间按比例分配
示例:三个项目分别设置 1、2、3 → 分得 1/6, 2/6, 3/6 的剩余空间

3. flex-shrink:缩小比例

css">.item {flex-shrink: 3; /* 默认1(允许缩小) */
}

计算规则:空间不足时按比例缩小

4. flex-basis:初始尺寸

css">.item {flex-basis: 200px | 30%; /* 默认auto */
}

优先级:比 width 更高

5. flex:综合简写

flex属性是flex-grow, flex-shrinkflex-basis的简写,默认值为0 1 auto。后两个属性可选。

css">.item {flex: 1 1 200px; /* grow shrink basis */
}

常用值

  • flex: 1 → 1 1 0%
  • flex: none → 0 0 auto

6. align-self:个性化对齐

css">.item {align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

作用:覆盖容器的 align-items 设置

四、经典布局实战

1. 水平垂直居中

css">.container {display: flex;justify-content: center;align-items: center;
}

2. 等宽三栏布局

css">.item {flex: 1; /* 三个项目均分宽度 */
}

3. 圣杯布局

css">.main {flex: 1;
}
.aside {width: 200px;
}

4. 流式布局

css">.container {flex-wrap: wrap;
}
.item {flex: 1 0 200px; /* 最小200px,自动换行 */
}

五、Flex 布局使用口诀

主轴方向定乾坤,
换行控制要记真。
对齐方式分轴用,
项目属性更细分。
简写属性效率高,
经典布局脑中存。

六、注意事项

  1. 旧版浏览器需加前缀 -webkit-
  2. 移动端优先:Flex 在移动端支持度更好
  3. 避免滥用:简单布局建议优先使用传统方案

七、总结

Flex 弹性盒布局通过简单的属性设置,就能实现复杂的排列效果,是现代网页设计中不可或缺的工具。掌握 Flex 布局的关键在于理解容器和项目的属性作用,以及主轴与交叉轴的关系。通过不断实践,你会发现用 Flex 布局解决布局问题变得轻而易举,网页的适配性和美观度也会大幅提升。


http://www.ppmy.cn/embedded/178246.html

相关文章

【C++20】format格式化输出

C20 format格式化输出 在C20之前&#xff0c;格式化能力都依赖于三方格式化库FMT&#xff0c; 而C20 标准委员会终于在C标准库引入了格式化功能&#xff0c;从使用方式和风格来看其实就是FMT库转正了 直接使用 包含<format.h>头文件既可以直接使用&#xff0c;类似pyt…

记录vite-plugin-dts打包时无法生成 .d.ts文件问题

项目中build 时候需要生成如下dist中的main.d.ts&#xff0c; 如果配置vite additionalData会造成预编译scss报错 preprocessorOptions: {scss: {additionalData: import "/assets/styles/variables.scss";,// 刚开始使用下面两个配置可以打包出来&#xff0c;但是…

路由器、交换机、防火墙、服务器、负载均衡在网络中作用

1. 路由器&#xff08;Router&#xff09; 核心作用 跨网络通信&#xff1a;连接不同网络&#xff08;如LAN与WAN、不同子网&#xff09;&#xff0c;基于IP地址进行数据包转发。 路由决策&#xff1a;通过路由协议&#xff08;如OSPF、BGP&#xff09;动态选择最优路径&…

LangChain 核心技术

以下是基于我简历中的项目经验,结合LangChain技术栈整理的常见面试题及针对性回答建议。这些问题覆盖了技术实现、项目设计、创新点和行业应用等方面: 一、LangChain 核心技术相关问题 1. 请解释 LangChain 的核心设计理念和主要组件。 考察点:对LangChain框架的理解深度。…

深度解读 AWS IAM:身份访问管理与安全的核心纽带

导语 在 AWS&#xff08;亚马逊云服务&#xff09;的生态体系中&#xff0c;AWS IAM&#xff08;Identity and Access Management&#xff09;犹如坚固的堡垒&#xff0c;守护着用户在云端的各类资源。它不仅是管理用户身份与访问权限的关键工具&#xff0c;更是维系 AWS 安全…

【AI论文】挑战推理的边界:大型语言模型的数学基准测试

摘要&#xff1a;近年来&#xff0c;大型推理模型的迅猛发展导致现有用于评估数学推理能力的基准测试趋于饱和&#xff0c;这凸显出迫切需要更具挑战性和严谨性的评估框架。为填补这一空白&#xff0c;我们推出了OlymMATH&#xff0c;这是一项全新的奥林匹克级数学基准测试&…

VS2022 Qt 项目使用数据库报错问题

一、问题现象&#xff1a;无法解析的外部符号 "__declspec(dllimport) public: __cdecl QSqlDatabase::QSqlDatabase(void)" 定义变量QSqlDatabase db后报错信息为“无法解析的外部符号” 二 、解决步骤&#xff1a; 1、在 Visual Studio 2022 中&#xff1a;右键项…

uv命令介绍(高性能Python包管理工具,旨在替代pip、pip-tools和virtualenv等传统工具)

文章目录 **主要功能**1. **快速安装和管理 Python 包**2. **生成和管理锁文件 (requirements.lock)**3. **创建虚拟环境**4. **与 poetry 兼容** **核心优势**1. **极快的速度**&#xff1a;基于 Rust 实现&#xff0c;利用多线程和缓存大幅加速依赖解析。2. **轻量且独立**&a…