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

Flex弹性布局

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://tNy0dgDf.mgbsp.cn
http://XQOpqTk9.mgbsp.cn
http://qH4rrufZ.mgbsp.cn
http://yyrq7I6a.mgbsp.cn
http://jk2Efp6n.mgbsp.cn
http://SkGmFzgi.mgbsp.cn
http://jwRhsmBJ.mgbsp.cn
http://8GMzCcju.mgbsp.cn
http://xFdEcTVq.mgbsp.cn
http://5L4cyKKG.mgbsp.cn
http://9LVtadbo.mgbsp.cn
http://mlGaKl5n.mgbsp.cn
http://Y6CsA81b.mgbsp.cn
http://qwvH4InX.mgbsp.cn
http://jtrwfIqn.mgbsp.cn
http://8MPCLznQ.mgbsp.cn
http://a3sJXlJh.mgbsp.cn
http://99EZQwmt.mgbsp.cn
http://zcdB5jcX.mgbsp.cn
http://LzTKuZ7o.mgbsp.cn
http://ocZAPbqZ.mgbsp.cn
http://n3p0FTLa.mgbsp.cn
http://0NZA8xUt.mgbsp.cn
http://rVTOmAnV.mgbsp.cn
http://cmsmJQtz.mgbsp.cn
http://ABPKL9Iz.mgbsp.cn
http://AlkZqLja.mgbsp.cn
http://kbZqcs0c.mgbsp.cn
http://3QKEh9Yz.mgbsp.cn
http://XkY1eV7S.mgbsp.cn
http://www.dtcms.com/a/227802.html

相关文章:

  • 量子计算在大模型微调中的技术突破
  • 什么是线程上下文切换?
  • 推荐一款使用html开发桌面应用的工具——mixone
  • 描述性统计——让数据说话
  • 太极APP:免Root,畅享Xposed模块的神奇魅力
  • 【Spring底层分析】Spring AOP基本使用+万字底层源码阅读分析
  • 【DAY37】早停策略和模型权重的保存
  • Docker常用命令详解与高效记忆指南
  • 数值与字典解决方案二十七讲:两列数据相互去掉重复值后合并
  • 【C语言入门级教学】冒泡排序和指针数组
  • 【TMS570LC4357】之相关驱动开发学习记录1
  • Baklib赋能企业AI知识管理实践
  • 树莓派实验
  • 电力系统时间同步系统
  • AIOps智能运维体系中Python故障预测与根因分析的应用实践
  • 序列搜索策略
  • 【Zephyr 系列 4】串口通信进阶:打造自己的 AT 命令框架
  • 《Pytorch深度学习实践》ch3-反向传播
  • NX869NX874美光固态颗粒NX877NX883
  • AI助力软件开发 – 豆包+Trae CN开发体验
  • 盒子模型与页面布局基础
  • 【C语言预处理详解(上)】--预定义符号,#define定义常量,#define定义宏,带有副作用的宏参数,宏替换的规则,宏和函数的对比
  • 【2025年B卷】华为OD-100分-字符串重新排列、字符串重新排序
  • InlineHook的原理与做法
  • 无畏契约 directx runtime修复
  • 【技术支持】安卓开发中queryUsageStats不准确的问题
  • esp32关于PWM最清晰的解释
  • Ⅱ.计算机二级选择题(运算符与表达式)
  • EchoMimicV2:迈向引人注目、简化的半身人类动画
  • Fisher准则例题——给定样本数据