Flex弹性布局

article/2025/6/29 3:39:19

Flexible Box(弹性盒子)布局是CSS3中引入的一种强大的布局模式,它能够更高效地处理容器内项目的排列、对齐和空间分配问题,特别适合构建响应式设计。

基本属性

  • Flex容器:设置了display: flexdisplay: inline-flex的父元素
  • Flex项目:Flex容器的直接子元素
  • 主轴:Flex项目的默认排列方向
  • 副轴:与主轴垂直的方向
/* 定义一个Flex容器 */
.container {display: flex; /* 或 inline-flex */
}

拥有flex属性的容器内的直接子元素自动成为Flex项目

##Flex容器属性详解

1. flex-direction

设置主轴的方向,元素跟着主轴排列
默认主轴为x水平向右,侧轴为y水平向下

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

在这里插入图片描述

2. flex-wrap

控制项目是否充满后换行

.container {flex-wrap: nowrap | wrap | wrap-reverse;
}
  • nowrap(默认):不换行,会在充满后压缩项目
  • wrap:换行,第一行在上方
  • wrap-reverse:换行,第一行在下方

3. flex-flow

flex-directionflex-wrap的简写

.container {flex-flow: column wrap;
}

4. justify-content

定义项目在主轴上的对齐方式

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

在这里插入图片描述

5. align-items

定义项目在副轴上的对齐方式(单行有效)

.container {align-items: stretch | flex-start | flex-end | center | baseline;
}
  • stretch(默认):拉伸填满容器高度
  • flex-start:顶部对齐
  • flex-end:底部对齐
  • center:垂直居中
  • baseline:项目的第一行文字基线对齐

6. align-content

定义多根轴线的对齐方式(多行有效)

.container {align-content: stretch | flex-start | flex-end | center | space-between | space-around;
}

属性值与justify-content类似->多了一个stretch
在这里插入图片描述

Flex子元素属性

1. order

定义项目的沿主轴的前后排列顺序,而不是显示权重排列顺序,数值越小越靠前,可以为负整数。

.item {order:number; /* 默认0 */
}

2. flex

用来代表分配剩余空间所占份数

.item {flex: number;
}

若flex为1,则代表该项目在剩余空间(父元素空间-已写死空间)占有1份。

3. align-self

允许单个项目在侧轴有与其他项目不一样的对齐方式

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

Flex布局注意事项

1. 误区

  • 不是所有场景都适合Flex:简单的一维布局用Flex,复杂二维布局考虑Grid
  • 过度使用flex: 1:可能导致内容挤压。

2. 性能考量

  • 大规模使用Flex布局(尤其是嵌套)可能影响渲染性能
  • 避免在滚动容器内使用复杂的Flex布局

3. flex常用技巧

  1. 垂直居中
.container {display: flex;<!--在主轴上居中-->justify-content: center;<!--在副轴上居中-->align-items: center;
}
  1. 等高分栏
.container {display: flex;
}
.item {
<!--多个item均占一份则可以实现等宽/等高-->flex: 1;
}
  1. 底部对齐
        .container {display: flex;flex-direction: column;background-color: blue;height: 400px;}.content {flex: 1;background-color: aqua;}
<body>
<div class="container">123<div class="content">1</div><div class="content">2</div><div class="content">3</div><div class="content">4</div><div class="content">5</div>123
</div>
</body>

效果:
在这里插入图片描述
删去4后:
在这里插入图片描述

Flex布局实战案例

1. 经典三栏布局(圣杯布局)

<div class="container"><header>Header</header><main><article>Main Content</article><nav>Navigation</nav><aside>Sidebar</aside></main><footer>Footer</footer>
</div>

css:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
跟随视口而变化

2. 响应式导航栏

<nav class="navbar"><div class="logo">Logo</div><ul class="nav-links"><li><a href="#">Home</a></li><li><a href="#">About</a></li><li><a href="#">Services</a></li><li><a href="#">Contact</a></li></ul><div class="menu-toggle"></div>
</nav>
.navbar {display: flex;justify-content: space-between;align-items: center;padding: 1rem;background-color: pink;}
.nav-links {display: flex;gap: 1rem;list-style: none;background-color: aqua;}
.menu-toggle {display: none;
}@media (max-width: 768px) {.nav-links {display: none;}.menu-toggle {display: block;}
}

随着视口变化而改变大小与显示:
在这里插入图片描述
在这里插入图片描述

总结

Flex布局是现代CSS中不可或缺的工具,它:

  • 简化了复杂布局的实现
  • 提供了强大的空间分配能力
  • 增强了响应式设计的灵活性

掌握Flex布局的关键在于理解主轴/副轴的概念,以及如何通过容器和项目的属性组合来实现各种布局需求。


http://www.hkcw.cn/article/jeqkoCSMeS.shtml

相关文章

Vue3(watch,watchEffect,标签中ref的使用,TS,props,生命周期)

Vue3&#xff08;watch&#xff0c;watchEffect&#xff0c;标签中ref的使用,TS,props,生命周期&#xff09; watch监视 情况三&#xff1a;监视reactive定义的对象类型的数据 监视reactive定义的对象类型的数据&#xff0c;默认开启深度监视。地址没变&#xff0c;新值和旧…

AI书签管理工具开发全记录(九):用户端页面集成与展示

文章目录 AI书签管理工具开发全记录&#xff08;九&#xff09;&#xff1a;用户端页面集成与展示前言设计思路实现步骤1. 路由配置2. 全局样式设置3. 首页实现4. Vite配置 设计说明1. 部分UI设计2. 响应式布局3. 加载更多功能 效果展示效果展示 AI书签管理工具开发全记录&…

基于IRI-2020模型的电离层特征参量计算与可视化

1. 研究背景 电离层是地球大气层中重要的组成部分&#xff0c;位于地面以上约60-1000公里高度范围内&#xff0c;包含大量自由电子和离子。电离层对无线电通信、卫星导航和空间天气监测等现代技术系统具有重要影响。国际参考电离层模型(IRI)是由国际空间研究委员会(COSPAR)和国…

Chapter 10 Inductive DC–DC Converters

Chapter 10 Inductive DC–DC Converters Design of Power Management Integrated Circuits - Bernhard Wicht 电感型DC-DC用电感做功率转换, 因为有开关, 也被称为开关型DC-DC. 电感型DC-DC相比LDO, 效率更高, 但是不那么"干净". 相比于电容型DC-DC (switched cap…

美股收涨 世纪铝业涨超21% 金属板块领涨市场

美东时间周一,美股三大指数集体收涨。道指涨0.08%,纳指涨0.67%,标普500指数涨0.41%。热门科技股多数上涨,AMD、Meta涨幅超过3%,超微电脑接近3%,博通超过2%,英伟达超过1%。特斯拉和谷歌跌幅超过1%。贵金属和金属原材料板块表现突出,世纪铝业涨幅超过21%,黄金资源超过16…

最大规模换俘 领导人会晤 俄乌再谈判有乾坤

当地时间6月2日,俄乌两国代表团在土耳其伊斯坦布尔就和平解决俄乌冲突举行第二轮直接谈判。谈判历时约一小时,于当地时间16时许结束。5月第一轮谈判后,乌称“毫无成果”,俄称“基本满意”。而本次土耳其总统埃尔多安则表示谈判取得了“重大成果”。俄乌双方就大规模换俘、交…

国足抵达雅加达备战世预赛18强赛 关键战在即

中国男足国家队于6月2日晚抵达印度尼西亚首都雅加达,准备参加5日在那里举行的2026美加墨世界杯亚洲区预选赛18强赛第9轮对阵印尼队的关键比赛。当地时间晚上10点30分,中国队在主教练伊万科维奇的带领下走出雅加达苏加诺-哈达国际机场,并登上大巴前往酒店。伊万科维奇在机场接…

尼日利亚洪灾致200余人遇难 救援工作已停止

尼日利亚洪灾致200余人遇难 救援工作已停止!当地时间6月2日,尼日利亚尼日尔州莫夸地方政府副主席穆萨金布库证实,近期洪灾导致的死亡人数已增至200人,另有500多人失踪。他表示救援工作已经停止,认为失踪人员已无生还可能。目前工作人员正加紧掩埋尸体,以防止疾病蔓延。5月…

②Pybullet干涉检查指令getContactPoints与 getClosestPoints介绍

1、指令格式说明 getContactPoints指令说明 该指令根据最近一次调用stepSimulation指令&#xff0c;返回接触点信息。它的输入参数信息如下所示; 该指令执行后在有干涉的情况下返回信息如下所示。没有干涉时&#xff0c;返回数据为空。 以下为使用示例&#xff0c;该示例为机…

Vue-Leaflet地图组件开发(二)地图核心功能实现

第二篇&#xff1a;Vue-Leaflet地图核心功能实现 1. 地图视窗管理 1.1 视窗状态持久化方案 // 增强版视窗保存功能 const saveLocation async (options {}) > {try {const {saveToLocal true, // 默认保存到本地存储saveToServer false, // 是否保存到服务器notif…

DAY 37 超大力王爱学Python

知识点回顾&#xff1a; 过拟合的判断&#xff1a;测试集和训练集同步打印指标模型的保存和加载 仅保存权重保存权重和模型保存全部信息checkpoint&#xff0c;还包含训练状态 早停策略 作业&#xff1a;对信贷数据集训练后保存权重&#xff0c;加载权重后继续训练50轮&#xf…

ubuntu 添加应用到启动菜单

使用Alacarte菜单编辑器 Alacarte是一个简单易用的菜单编辑器&#xff0c;可以帮助用户添加、删除或编辑应用程序的启动菜单项。 安装Alacarte sudo apt-get install alacarte 执行alacarte alacarte 使用说明 选择新建项目进行添加 "Name"栏填自定义的名称&quo…

3,信号与槽机制

这里绘制好了QT控件,现在需要点击控件,出现相应的响应操作 目录 法一 通过图形界面编写: 1,鼠标选中控件 ,右击,点击转到槽 选择相应的触发操作, 在widget.cpp和widget.h,分别自动增加如下代码: 需要手动添加进程头文件 : 查找QProcess如何使用 保存修改,并…

贪心算法应用:最小反馈顶点集问题详解

贪心算法应用&#xff1a;最小反馈顶点集问题详解 1. 问题定义与背景 1.1 反馈顶点集定义 反馈顶点集(Feedback Vertex Set, FVS)是指在一个有向图中&#xff0c;删除该集合中的所有顶点后&#xff0c;图中将不再存在任何有向环。换句话说&#xff0c;反馈顶点集是破坏图中所…

【Doris基础】Apache Doris中的Version概念解析:深入理解数据版本管理机制

目录 引言 1 Version概念基础 1.1 什么是Version 1.2 Version的核心作用 1.3 Version相关核心概念 2 Version工作机制详解 2.1 Version在数据写入流程中的作用 2.2 Version在数据查询流程中的作用 2.3 Version的存储结构 3 Version的进阶特性 3.1 Version的合并与压…

vLLM实战部署embedding、reranker、senseVoice、qwen2.5、qwen3模型

概述 一个开源的支持高并发的高性能大模型推理引擎。在这篇博客有简单提到过。 学习资料&#xff1a;官方文档&#xff0c;官方中文文档&#xff0c;中文文档。 modelscope 通过vLLM&#xff08;或其他平台、框架&#xff09;部署模型前&#xff0c;需要先下载模型。国内一…

Java函数式编程(中)

三、Stream API &#xff08;1&#xff09;创建操作 构建Arrays.stream(数组)根据数组构建Collection.stream()根据集合构建Stream.of(对象1, 对象2, ...)根据对象构建 生成IntStream.range(a, b)根据范围生成&#xff08;含a 不含b&#xff09;IntStream.rangeClosed(a, b)…

16.FreeRTOS

目录 第1章 FreeRTOS 实时操作系统 1.1 认识实时操作系统 1.1.1 裸机的概念 1.1.2 操作系统的概念 1.2 操作系统的分类 1.3 常见的操作系统 1.4 认识实时操作系统 1.4.1 可剥夺型内核与不可剥夺型内核 1.4.2 嵌入式操作系统的作用 1.4.3 嵌入式操作系统的发展 1.4.4…

windows11安装scoop 20250602

详细的 Scoop 安装步骤&#xff1a; 使用国内镜像安装 Scoop 首先&#xff0c;打开 PowerShell&#xff08;右键点击 win按钮&#xff0c;–>终端&#xff0c;Scoop官方不建议用管理员权限安装)&#xff0c;然后执行以下命令&#xff1a; # 设置 Scoop 安装路径 $env:SCOO…

类和对象(一)

一、面向对象 &#xff08;OOP是面向对象的语言的简称&#xff09; Java是⼀⻔纯⾯向对象的语⾔&#xff0c;在⾯向对象的世界⾥&#xff0c;⼀切皆 为对象。⾯向对象是解决问题的⼀种思想&#xff0c;主要依靠对象之间的交互完成⼀件事情。 面向对象——>不关注过程&…