使用Flex布局实现多行多列,每个列宽度相同

一、Flex布局实现多行多列

在前端布局中,Flexbox(弹性布局)是一个非常灵活的布局工具。通过设置父容器的 display: flexflex-wrap: wrap,可以让子元素在宽度不足时自动换行,从而实现多行布局。

示例

html 复制代码
<template>
  <div class="box-wrapper">
    <div v-for="item in 10" :key="item">{{ item }}</div>
  </div>
</template>

<style lang="scss" scoped>
.box-wrapper {
  width: 100vw;
  height: 100vh;
  border: 1px solid red;
  display: flex;
  flex-wrap: wrap;

  div {
    border: 1px solid;
    flex: 0 1 calc(100% / 3); /* 每行三列 */
  }
}
</style>
  • flex: 0 1 calc(100% / 3)

    • 0flex-grow 不放大

    • 1flex-shrink 可缩小(避免溢出)

    • calc(100% / 3)flex-basis,每个元素宽度为父容器的三分之一

  • flex-wrap: wrap → 允许子元素换行,形成多行布局


二、整除与不整除的情况

假设我们有 10 个子元素,每行三列:

  • 第一行:1 2 3

  • 第二行:4 5 6

  • 第三行:7 8 9

  • 第四行:10

注意:最后一行只有一个元素。

为什么最后一行宽度仍然和前面一致?

  • 每个元素宽度是 calc(100% / 3),固定宽度

  • 不管最后一行有几个元素,它的宽度 不会自动撑满剩余空间

  • 左侧空白不会影响元素自身宽度

这种方式可以保持所有元素宽度一致,布局整齐。

三、总结

  1. Flex布局多行多列核心 :父容器 flex-wrap: wrap + 子元素固定宽度 flex-basis

  2. 不整除情况:最后一行元素宽度依然固定,布局整齐,不需要自动伸长。

  3. 优点:简单、无需额外计算,兼容多行多列布局需求。

相关推荐
vipbic20 小时前
用 Turborepo 打造 Strapi 插件开发的极速全栈体验
前端·javascript
天涯学馆20 小时前
为什么 JavaScript 可以单线程却能处理异步?
前端·javascript
Henry_Lau61720 小时前
主流IDE常用快捷键对照
前端·css·ide
陶甜也20 小时前
使用Blender进行现代建筑3D建模:前端开发者的跨界探索
前端·3d·blender
C+++Python20 小时前
CSS Grid和Flexbox有什么区别?
css
我命由我1234521 小时前
VSCode - Prettier 配置格式化的单行长度
开发语言·前端·ide·vscode·前端框架·编辑器·学习方法
HashTang21 小时前
【AI 编程实战】第 4 篇:一次完美 vs 五轮对话 - UnoCSS 配置的正确姿势
前端·uni-app·ai编程
JIngJaneIL21 小时前
基于java + vue校园快递物流管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js
asdfg125896321 小时前
JS中的闭包应用
开发语言·前端·javascript