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

【css】快速上手Flexbox布局(理论讲解+实战) - 详解

Flexbox布局三剑客

flexbox布局的三大核心概念:

1. 方向(flex-direction)

flex-direction属性定义了主轴的方向,决定项目是水平排列还是垂直排列。
可选值:

  • row(默认):主轴为水平方向,项目从左到右排列。
  • row-reverse:主轴为水平方向,项目从右到左排列。
  • column:主轴为垂直方向,项目从上到下排列。
  • column-reverse:主轴为垂直方向,项目从下到上排列。
    示例代码:
.box {flex-direction: row | row-reverse | column | column-reverse;
}

2. 主轴对齐属性(justify-content)

justify-content属性管理项目在主轴上的对齐和分布。
对齐类:

  • flex-start(默认):项目向主轴起点对齐。
  • flex-end:项目向主轴终点对齐。
  • center:项目在主轴上居中对齐。
    分布类:
  • space-between:项目均匀分布在主轴上,两端不留空隙。
  • space-around:项目两侧间距相等,项目之间空隙是其他间隔的一半。
  • space-evenly:所有项目之间的间隔完全相等,包括两端。
    示例代码:
.box {justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;
}

这样优化后的内容结构更清晰,描述更准确,方便读者理解和应用Flexbox布局。

3.交叉轴对齐(Align Items)

align-items 管理项目在交叉轴上的对齐方式。

  1. stretch(默认值)
    效果:拉伸所有 Flex 项目,使其在交叉轴方向上填满整个容器的高度。

条件:只有当项目没有设置固定高度(或 min-height / max-height)时,拉伸才会生效。如果项目设置了高度,则会使用该高度。

视觉表现:所有项目看起来都一样高,并且和容器一样高。

  • flex-start
    效果:所有项目在交叉轴上紧贴容器起始点对齐。

视觉表现:项目从顶部开始排列,高度由自身内容或高度属性决定。

  • flex-end
    效果:所有项目在交叉轴上紧贴容器结束点对齐。

视觉表现:项目从底部开始排列,高度由自身内容或高度属性决定。

  • center
    效果:所有项目在交叉轴上居中对齐。

视觉表现:项目在垂直方向上居中,高度由自身内容或高度属性决定。这是非常常用的一个值。

  • baseline
    效果:所有项目根据它们文本的基线进行对齐。

视觉表现:无论每个项目的高度是否相同,它们的文字都会在同一水平线上对齐。这对于对齐不同字体大小的文本内容非常有用。

实战一下

掌握了基础知识,我们来个小案例实践以下,我们现在要制作如下的效果,想让他拥有一定的自适应,又不会变形很严重,应该怎么制作呢?

整体布局结构

  • 使用嵌套 flex 布局实现两行四列的卡片布局
  • 外层容器垂直排列,内层容器水平排列

主要布局代码分析

1. 外层容器 card-container

.card-container {display: flex;flex-direction: column;gap: 16px;padding: 20px;width: 100%;box-sizing: border-box;
}

  • display: flex + flex-direction: column: 创建垂直方向的弹性布局
  • gap: 16px: 设置子元素(两行)之间的垂直间距
  • padding: 20px: 容器内边距,确保内容不贴边
  • box-sizing: border-box: 盒模型计算包含padding和border

2. 行容器 card-row

.card-row {display: flex;flex-wrap: nowrap;gap: 16px;width: 100%;
}

  • display: flex: 创建水平方向的弹性布局
  • flex-wrap: nowrap: 禁止换行,强制所有卡片在一行内显示
  • gap: 16px: 设置卡片间的水平间距
  • width: 100%: 占满父容器宽度

3. 卡片项 card-item

.card-item {flex: 1 1 calc(25% - 12px);min-width: 300px;
}

  • flex: 1 1 calc(25% - 12px):
    • flex-grow: 1: 有剩余空间时可以放大
    • flex-shrink: 1: 空间不足时可以缩小
    • flex-basis: calc(25% - 12px): 初始宽度为25%减去间隙占用空间
  • min-width: 300px: 设置最小宽度,防止卡片过小

HTML结构说明

  • cardList.slice(0, 4): 取前4个卡片用于第一行
  • cardList.slice(4, 8): 取后4个卡片用于第二行
  • 每行独立的 card-row 容器确保两行布局的稳定性

这种布局方式在 flex-wrap: nowrap 的约束下实现了稳定的两行四列布局,并具有良好的响应式特性。

完整代码


<script setup lang="ts">interface CardItem {id: number;title: string;description: string;}const cardList: CardItem[] = [{ id: 1, title: '卡片一', description: '第一个功能卡片' },{ id: 2, title: '卡片二', description: '第二个功能卡片' },{ id: 3, title: '卡片三', description: '第三个功能卡片' },{ id: 4, title: '卡片四', description: '第四个功能卡片' },{ id: 5, title: '卡片五', description: '第五个功能卡片' },{ id: 6, title: '卡片六', description: '第六个功能卡片' },{ id: 7, title: '卡片七', description: '第七个功能卡片' },{ id: 8, title: '卡片八', description: '第八个功能卡片' }];
</script>

参考文献:

https://www.runoob.com/w3cnote/flex-grammar.html

http://www.jsqmd.com/news/50093/

相关文章:

  • 基于STM32驱动AD7606并进行数据显示
  • 2025年11月 供应链咨询机构公司电话
  • 2025年11月 降本增效机构推荐
  • VSCode 配备 Dubbo 超时与重试:application.yml 配置的详细步骤
  • 2025年11月 值得信赖的企业管理咨询公司
  • 2025年广东中山平价寿司品牌综合推荐排行榜:创业加盟优选指南
  • 上海协睦联系方式:企业基本信息与使用建议指南
  • 上海协睦联系方式:技术团队选择产品的通用指导建议
  • 【案例分享】如何利用图表控件TeeChart集成,实现可持续环境修复
  • 2025年11月国内画册设计公司权威推荐榜单:专业选择指南
  • 2025年画册设计公司权威推荐榜单:专业选择指南
  • 2025年画册设计公司权威推荐榜单:五大顶尖服务商深度解析
  • Mass rape to death and murder
  • 2025年11月国内画册设计企业推荐:权威排行榜与选择指南
  • 2025年常州产品包装设计公司权威推荐榜单:产品外包装设计/纸盒包装设计/包装设计专业源头公司精选
  • 上海协睦联系方式:工业润滑领域沟通渠道说明
  • 2025年11月流动化学合成成套装置推荐评测报告:从稳定性到AI能力解决方案剖析
  • 上海协睦联系方式:专业工业润滑产品使用指南
  • 客观科学分析Golang Green Tea GC和dotNet GC哪个性能更好
  • ABViewer 16全新发布:3D可视化、PDF转DWG、G-code生成全面升级
  • 利用朴素贝叶斯对UCI 的 mushroom 数据集进行分类
  • JimuReport 积木报表 v2.2.0 版本发布,免费的可视化报表和大屏
  • 2025年11月流动化学合成成套装置推荐评测报告:从稳定性到AI能力的解决方案剖析
  • JSAPIThree 标签使用学习笔记:在地图上添加文字和图标
  • 2025 美本留学机构十大推荐:双轨赋能冲刺名校,2025-2026 申请季选对机构赢在起点!
  • 为什么企业死盯第一学历?
  • 2025年本安型低速图像处理摄像仪批发厂家权威推荐榜单:矿用本安型低速图像处理摄像仪/矿用本安型显示屏/本安型海思3403主板源头厂家精选
  • 实用指南:【C++】C++11都有什么新特性?
  • 移动端弱网优化专题(十五):字节跳动移动端网络HttpDNS优化实践
  • k8s 容器部署 - 教程