Vue.js 中实现固定列数的响应式网格布局(替代传统表格)

胖静君_3543

胖静君_3543

2026-09-06

392人浏览

原创

Vue.js 中实现固定列数的响应式网格布局(替代传统表格)

本文介绍如何在 Vue.js 中摒弃语义不符的传统 ,改用 CSS Grid 实现灵活、响应式的固定列数布局(如每行 3 列),自动按顺序填充数据,完美适配任意长度的数据列表。

本文介绍如何在 vue.js 中摒弃语义不符的传统 `

`,改用 CSS Grid 实现灵活、响应式的固定列数布局(如每行 3 列),自动按顺序填充数据,完美适配任意长度的数据列表。

在 Vue.js 开发中,当需要将一维数据列表(如商品、卡片、项目)以“固定列数、自动换行”的方式呈现时,许多开发者会下意识沿用 <table> 结构。但需明确:<strong>表格(<code><table>)专为二维关系型数据设计(行列均有明确语义);而单维度列表按固定列平铺属于展示布局问题,非语义化表格场景。强行用 <code><tr>/<code><td> 实现会导致结构僵硬、响应式困难、可访问性下降,且难以动态控制列数。<p>✅ 推荐方案:<strong>CSS Grid + 语义化容器(如 <code><ul></ul>/<div>)<p>CSS Grid 提供了原生、声明式的列控制能力,无需手动计算索引或拆分数组。只需定义 <code>grid-template-columns,浏览器即自动按指定列数排列子元素,剩余项自然换行——完全响应式、零 JS 逻辑、高度可维护。

以下是一个生产就绪的 Vue 3(Composition API)示例,实现每行固定 3 列的商品卡片布局:

@@######@@

? 关键优势说明

jm-jsjkxyjs02-pzl-803
jm-jsjkxyjs02-pzl-803

查询全球任意城市的实时天气和未来天气预报

下载
  • 零逻辑计算:无需 v-for 嵌套、无需 Math.floor(index / 3)slice() 分组,Grid 自动处理;
  • 真正响应式:仅需一行 CSS 即可适配不同屏幕(例如 @media (max-width: 768px) { grid-template-columns: 1fr; } 变为单列);
  • 语义清晰:用 <article></article> 表达独立内容单元,符合 HTML5 语义标准,提升 SEO 与无障碍支持;
  • 样式解耦:列数、间距、悬停效果全部由 CSS 控制,组件逻辑专注数据,职责分离。

⚠️ 注意事项

  • 避免在 Grid 容器内使用 floatinline-block 等旧式布局属性,它们会破坏 Grid 流;
  • 若需支持 IE11,请改用 display: flex + flex-wrap: wrap 并配合 flex-basis 计算(但强烈建议放弃 IE11);
  • 对于超大数据集(>1000 项),可结合虚拟滚动(如 vue-virtual-scroller)优化性能。

总结:用语义正确的结构(<article></article>/<ul></ul>)搭配现代 CSS(Grid/Flexbox),是 Vue 应用中实现“固定列数自动布局”的最佳实践。它更简洁、更健壮、更易扩展,也更符合 Web 标准演进方向。

<script setup>
import { ref } from 'vue'

const items = ref([
  { id: 1, name: "Item 1", price: 10.99 },
  { id: 2, name: "Item 2", price: 20.50 },
  { id: 3, name: "Item 3", price: 15.75 },
  { id: 4, name: "Item 4", price: 15.75 },
  { id: 5, name: "Item 5", price: 25.00 },
  { id: 6, name: "Item 6", price: 18.99 }
])
</script><template><div class="items-grid">
    <article v-for="item in items" :key="item.id" class="item-card"><header class="item-header"><span class="item-id">ID: {{ item.id }}</span>
        <h3 class="item-name">{{ item.name }}</h3>
      </header><footer class="item-footer"><span class="item-price">${{ item.price.toFixed(2) }}</span>
      </footer></article>
</div>
</template><style scoped>
.items-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* 固定 3 列,等宽 */
  gap: 1.25rem; /* 列与行间距 */
  padding: 0.75rem;
}

.item-card {
  border: 1px solid #e0e0e0;
  border-radius: 0.5rem;
  background: #fff;
  box-shadow: 0 2px 4px rgba(0,0,0,0.05);
  transition: box-shadow 0.2s;
}

.item-card:hover {
  box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}

.item-header {
  padding: 1rem 0.75rem 0.5rem;
  border-bottom: 1px solid #f5f5f5;
}

.item-id {
  font-size: 0.85rem;
  color: #666;
  font-weight: 500;
}

.item-name {
  margin: 0.25rem 0 0;
  font-size: 1.1rem;
  font-weight: 600;
  color: #333;
}

.item-footer {
  padding: 0.5rem 0.75rem 0.75rem;
  text-align: center;
}

.item-price {
  font-size: 1.25rem;
  font-weight: 700;
  color: #2c7a3d;
}
</style>

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

vue js vue.js

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

4875

7

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

2852

4

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

2530

5

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.01

2559

5

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2023.08.11

4539

6

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

2023.08.11

2501

3

html转txt
html转txt

html转txt的方法有使用文本编辑器、使用在线转换工具和使用Python编程。本专题为大家提供html转txt相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

2289

3

html文本框代码怎么写
html文本框代码怎么写

html文本框代码:1、单行文本框【<input type="text" style="height:..;width:..;" />】;2、多行文本框【textarea style=";height:;"></textare】。

2023.09.01

2108

6

HTML嵌入CSS样式的方法
HTML嵌入CSS样式的方法

HTML嵌入CSS样式的方法有内联样式、内部样式表和外部样式表。本专题为大家提供CSS样式相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.20

2068

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app快速上手
uni-app快速上手

共0课时 | 0人学习

Vue 教程
Vue 教程

共42课时 | 16.7万人学习

Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 2.4万人学习