如何使用Vuetify实现卡片内容的行内自动对齐?
Vuetify 表格与卡片混合布局实现(行对齐+高度自适应)
下面是一个基础实现示例,核心利用Vuetify的flex布局系统,确保同一行的卡片对应内容区域高度自动匹配最长项:
<template> <v-container fluid class="pa-4"> <!-- 第一组卡片行 --> <v-row class="mb-4"> <v-col md="4" v-for="(item, idx) in group1" :key="`group1-${idx}`"> <v-card elevation="2"> <v-card-text class="card-content"> <!-- 标题行 --> <div class="content-row font-weight-bold"> {{ item.title }} </div> <!-- 数据行1 --> <div class="content-row"> 对比项1: {{ item.data1 }} </div> <!-- 数据行2 --> <div class="content-row"> 对比项2: {{ item.data2 }} </div> </v-card-text> </v-card> </v-col> </v-row> <!-- 第二组卡片行 --> <v-row> <v-col md="4" v-for="(item, idx) in group2" :key="`group2-${idx}`"> <v-card elevation="2"> <v-card-text class="card-content"> <div class="content-row font-weight-bold"> {{ item.title }} </div> <div class="content-row"> 对比项1: {{ item.data1 }} </div> <div class="content-row"> 对比项2: {{ item.data2 }} </div> </v-card-text> </v-card> </v-col> </v-row> </v-container> </template> <script setup> // 模拟测试数据,包含不同长度的文本 const group1 = [ { title: "产品A", data1: "短文本", data2: "这是一段较长的测试文本,用来验证高度自适应效果,确保同一行的卡片对应行高度一致" }, { title: "产品B", data1: "中等长度的文本内容", data2: "普通文本" }, { title: "产品C", data1: "这是一段非常长的文本,用来占据更多高度,测试同行卡片的自适应能力", data2: "短内容" } ]; const group2 = [ { title: "产品D", data1: "普通文本", data2: "短文本" }, { title: "产品E", data1: "这是一段用来测试的长文本,看看是否能让同行卡片对应行高度自动匹配", data2: "中等长度文本" } ]; </script> <style scoped> .card-content { display: flex; flex-direction: column; gap: 1rem; /* 内容行之间的间距 */ } .content-row { flex: 1; /* 关键:让每个内容行自动填充可用高度,同行卡片对应行高度一致 */ display: flex; align-items: center; /* 可选:让行内文本垂直居中 */ } </style>
关键实现要点:
- 用
<v-row>和<v-col>构建卡片的行/列布局,确保卡片在同一行排列 - 给卡片内部的内容容器设置
flex-direction: column,让内容垂直排列 - 给每个内容行添加
flex: 1属性,这样同一行的卡片对应内容行会自动拉伸到该行的最大高度,实现高度对齐 - 通过
gap控制内容行之间的间距,提升可读性
内容的提问来源于stack exchange,提问作者philburns
相关产品推荐
相关产品推荐

