el-table表头竖向排在第一列

<template>
  <div>
    <div class="title">
      <h3>尺码详情</h3>
    </div>
    <el-divider></el-divider>
    <el-table style="width: 300px" :data="getValues" :show-header="false">
      <el-table-column
        v-for="(item, index) in getHeaders"
        :key="index"
        :prop="item"
        align="center"
      >
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  computed: {
    getHeaders() {
      return this.tableData.reduce(
        (pre, _cur, index) => pre.concat(`value${index}`),
        ["title"]
      );
    },
    getValues() {
      return this.headers.map((item) => {
        return this.tableData.reduce(
          (pre, cur, index) =>
            Object.assign(pre, { ["value" + index]: cur[item.value] }),
          { title: item.label }
        );
      });
    },
  },
  data() {
    return {
      tableData: [
        { size1: "160/74A", size2: "XS", size3: "201" },
        { size1: "165/72A", size2: "S", size3: "202" },
        { size1: "170/76A", size2: "M", size3: "203" },
      ],
      headers: [
        { label: "号型", value: "size1" },
        { label: "规格", value: "size2" },
        { label: "尺码编码", value: "size3" },
      ],
    };
  },
};
</script>
### 如何使用 `el-table` 实现带有竖向表头(即表头位于第一列)的效果 要实现 `el-table` 的竖向表头效果,可以通过 Vue 和 Element UI 提供的功能来完成。以下是具体的解决方案: #### HTML 结构 通过设置 `<el-table>` 组件的结构,可以将数据的第一列表示为属性名称,其余列为对应的值。 ```html <el-table class="statusInfo" v-if="perf_yearly" :data="perf_yearly"> <!-- 定义第一列作为竖向表头 --> <el-table-column> <template slot-scope="scope"> {{ perf_yearlyColumnList[scope.$index] }} </template> </el-table-column> <!-- 动态生成其他列 --> <el-table-column v-for="(item, index) in yearList" :key="index" :label="item" :prop="item" > </el-table-column> </el-table> ``` 上述代码中,`perf_yearlyColumnList` 是一个数组,存储了所有的属性名称[^1]。这些属性名称会被渲染在表格的第一列中。而 `yearList` 则是一个动态生成的年份列表,用于表示每一列的数据标签。 #### 数据准备 为了使该功能正常运行,需要准备好以下几部分数据: - **`perf_yearly`**: 这是一个二维数组,其中每个子数组代表某一年度的所有性能指标值。 - **`perf_yearlyColumnList`**: 存储所有性能指标的名称,长度应等于 `perf_yearly` 中任意子数组的长度。 - **`yearList`**: 存储年度列表,用于定义表格的列数和每列的标题。 #### JavaScript 部分 在 Vue 的组件逻辑中,初始化以上提到的数据源。 ```javascript export default { data() { return { perf_yearly: [ [80, 90, 75], // 年度A的各项性能指标 [85, 92, 78], // 年度B的各项性能指标 [88, 94, 80] // 年度C的各项性能指标 ], perf_yearlyColumnList: ['CPU', 'Memory', 'Disk'], // 属性名称 yearList: ['Year A', 'Year B', 'Year C'] // 年度列表 }; } }; ``` 在此配置下,`perf_yearly` 数组中的每个子数组分别对应于某一特定年的各项性能指标值,而 `perf_yearlyColumnList` 列出了所有可能的性能指标项。 #### 样式调整 如果希望进一步优化视觉效果,可以在 CSS 中添加样式规则以增强用户体验。例如,给第一列加上固定宽度或者背景颜色区分其特殊性。 ```css .statusInfo .el-table__row td:first-child { background-color: #f0f8ff; } ``` 此段代码会使得第一列具有浅蓝色背景,从而更直观地区分开它与其他常规单元格的不同角色。 --- ### 总结 综上所述,借助 Vue 及 Element UI 的强大能力,我们能够轻松构建出具备竖向表头特性的复杂表格布局。这种设计不仅提升了界面美观程度,还增强了数据分析过程中的易读性和条理性。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值