当前位置:首页 > VUE

vue实现垂直表格

2026-01-18 05:50:58VUE

实现垂直表格的基本思路

在Vue中实现垂直表格(即表头在左侧,数据向右展开的布局),可以通过调整HTML结构和CSS样式来实现。垂直表格常用于对比数据或展示属性-值对。

HTML结构设计

使用Vue的模板语法创建基础结构,通过v-for循环渲染数据:

<template>
  <div class="vertical-table">
    <div class="row" v-for="(row, index) in tableData" :key="index">
      <div class="header-cell">{{ row.header }}</div>
      <div class="data-cell" v-for="(cell, cellIndex) in row.data" :key="cellIndex">
        {{ cell }}
      </div>
    </div>
  </div>
</template>

CSS样式设置

通过Flex布局实现垂直表格的排列,确保表头固定在左侧:

vue实现垂直表格

.vertical-table {
  display: flex;
  flex-direction: column;
  border: 1px solid #ddd;
}

.row {
  display: flex;
  border-bottom: 1px solid #ddd;
}

.header-cell {
  flex: 0 0 150px;
  padding: 8px;
  background-color: #f5f5f5;
  font-weight: bold;
  border-right: 1px solid #ddd;
}

.data-cell {
  flex: 1;
  padding: 8px;
}

Vue数据定义

在Vue组件的data中定义表格数据,结构需包含表头和数据数组:

export default {
  data() {
    return {
      tableData: [
        { header: '姓名', data: ['张三', '李四', '王五'] },
        { header: '年龄', data: [25, 30, 28] },
        { header: '职业', data: ['工程师', '设计师', '产品经理'] }
      ]
    }
  }
}

动态数据绑定

若需从API获取数据,可在mountedcreated钩子中异步加载:

vue实现垂直表格

export default {
  data() {
    return {
      tableData: []
    }
  },
  async mounted() {
    const response = await fetch('/api/vertical-table-data');
    this.tableData = await response.json();
  }
}

响应式布局优化

添加媒体查询确保在小屏幕下的显示效果:

@media (max-width: 768px) {
  .header-cell {
    flex: 0 0 100px;
  }
}

添加交互功能

通过Vue方法实现行高亮或点击事件:

<div class="row" 
     v-for="(row, index) in tableData" 
     :key="index"
     @click="handleRowClick(row)"
     :class="{ 'active-row': activeRow === index }">
</div>
methods: {
  handleRowClick(row) {
    console.log('Clicked row:', row);
    this.activeRow = index;
  }
}

完整组件示例

整合以上代码的完整单文件组件示例:

<template>
  <div class="vertical-table">
    <div class="row" 
         v-for="(row, index) in tableData" 
         :key="index"
         @click="handleRowClick(index)"
         :class="{ 'active-row': activeRow === index }">
      <div class="header-cell">{{ row.header }}</div>
      <div class="data-cell" v-for="(cell, cellIndex) in row.data" :key="cellIndex">
        {{ cell }}
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeRow: null,
      tableData: [
        { header: '姓名', data: ['张三', '李四', '王五'] },
        { header: '年龄', data: [25, 30, 28] },
        { header: '职业', data: ['工程师', '设计师', '产品经理'] }
      ]
    }
  },
  methods: {
    handleRowClick(index) {
      this.activeRow = index;
    }
  }
}
</script>

<style scoped>
.vertical-table {
  display: flex;
  flex-direction: column;
  border: 1px solid #ddd;
}
.row {
  display: flex;
  border-bottom: 1px solid #ddd;
}
.header-cell {
  flex: 0 0 150px;
  padding: 8px;
  background-color: #f5f5f5;
  font-weight: bold;
  border-right: 1px solid #ddd;
}
.data-cell {
  flex: 1;
  padding: 8px;
}
.active-row {
  background-color: #e6f7ff;
}
@media (max-width: 768px) {
  .header-cell {
    flex: 0 0 100px;
  }
}
</style>

标签: 表格vue
分享给朋友:

相关文章

vue实现tab换行

vue实现tab换行

Vue实现Tab切换的常见方法 使用Vue实现Tab切换功能可以通过多种方式完成,以下是几种常见的方法: 动态组件结合v-if或v-show 通过v-if或v-show控制不同Tab内容的显示…

vue前端实现打印功能

vue前端实现打印功能

使用Vue实现前端打印功能 在Vue项目中实现打印功能可以通过多种方式完成,以下是几种常见的方法: 使用window.print()方法 这是最简单的打印方式,直接调用浏览器的打印功能。 me…

vue路由实现内部切换

vue路由实现内部切换

Vue 路由实现内部切换的方法 Vue Router 是 Vue.js 官方的路由管理器,用于实现单页应用(SPA)的页面切换。以下是几种常见的内部路由切换方式: 使用 <router-lin…

vue实现多选题

vue实现多选题

Vue实现多选题的方法 使用Vue实现多选题功能,可以通过v-model绑定数组、动态渲染选项、以及处理选中状态来实现。以下是一个完整的实现示例: 基础实现代码 <template>…

vue穿梭框组件实现

vue穿梭框组件实现

实现基础穿梭框组件 在Vue中实现穿梭框组件,可以使用<el-transfer>(Element UI)或手动实现。以下是手动实现的核心逻辑: <template> &l…

vue设计与实现下载

vue设计与实现下载

vue设计与实现电子书下载 《Vue.js设计与实现》是一本深入解析Vue.js框架原理的书籍,由霍春阳(HcySunYang)撰写。以下是获取该资源的常见途径: 正版购买渠道 京东、当当、天…