You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:25:39