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

一、Flex布局实现多行多列

在前端布局中,Flexbox(弹性布局)是一个非常灵活的布局工具。通过设置父容器的 display: flex 和 flex-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)

    • 0 → flex-grow 不放大

    • 1 → flex-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. 优点:简单、无需额外计算,兼容多行多列布局需求。

相关推荐
蜗牛攻城狮2 小时前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
她说可以呀3 小时前
Vue插槽
前端·javascript·vue.js
qq_448011164 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
aixingpan4 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
2601_958352904 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块
志尊宝5 小时前
AI原生前端开发(039):AI辅助的Nuxt 4全栈开发
前端·vue.js·ai-native
FRing036 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
excel6 小时前
双 Token 与前端使用 Crypto 公私钥鉴权换 Token,哪种方案更好?
前端·后端
外收内放6 小时前
Python基础语法练习题(73)
java·前端·python
风骏时光牛马7 小时前
面向复杂场景的大模型应用落地与能力优化实践
前端