element-ui中el-table-column动态表头

<template>
  	<div id="app">
      <el-table :data="tableData" style="width: 100%">
       <!-- 静态表头 -->
       <el-table-column
    ​    :label="姓名"
    ​    prop="name"
       \></el-table-column>

       <!-- 动态表头 -->
       <el-table-column
    ​    v-for="(column, index) in dynamicColumns"
    ​    :key="'dynamic-' + index"
    ​    :label="column.label"
    ​    :prop="column.prop"
       \></el-table-column>
      </el-table>
 	</div>
</template>
<script>

export default {
	name: 'App',
	data() {
		 return {
			dynamicColumns: [
			​   { label: '年龄', prop: 'age' },
			​    { label: '城市', prop: 'city' },
			​    { label: '职位', prop: 'position' }
			   ],
			   tableData: [
			​    { name: '张三', age: 28, city: '北京', position: '工程师' },
			​    { name: '李四', age: 22, city: '上海', position: '设计师' },
			​    { name: '王五', age: 30, city: '广州', position: '产品经理' }
			]
		 };
	 }
};

</script>

<style scoped>
	\#app {
	     font-family: Avenir, Helvetica, Arial, sans-serif;
	     text-align: center;
	     color: #2c3e50;
	  }
</style>


### 实现 Element-UI `el-table` 动态生成表头并垂直显示的方法 为了实现动态生成表头以及让表头文字垂直显示,可以结合 Vue.jsElement-UI 提供的相关属性和方法完成这一目标。 #### 1. **动态生成表头** 通过使用 `v-for` 循环遍历定义好的表头数组,可以在模板中动态渲染表头。以下是具体代码示例: ```vue <template> <el-table :data="tableData"> <!-- 动态生成表头 --> <el-table-column v-for="(header, index) in tableHeaders" :key="index" :prop="header.prop" :label="header.label" align="center" > </el-table-column> </el-table> </template> <script> export default { data() { return { tableHeaders: [ { prop: 'name', label: '姓名' }, { prop: 'age', label: '年龄' }, { prop: 'address', label: '地址' } ], tableData: [ { name: '张三', age: 28, address: '北京市朝阳区' }, { name: '李四', age: 30, address: '上海市浦东新区' } ] }; } }; </script> ``` 上述代码展示了如何利用 `v-for` 遍历 `tableHeaders` 数组来动态生成表头[^2]。 --- #### 2. **表头文字垂直显示** 要使表头的文字垂直显示,可以通过自定义样式或者覆盖默认样式的方式调整布局。以下是一个解决方案: ##### 自定义 CSS 样式 在 `<style>` 或全局样式文件中添加如下代码: ```css /* 垂直显示表头 */ .el-table th.is-leaf { writing-mode: vertical-lr; transform: rotate(-180deg); } ``` 该样式会将所有的表头单元格设置为垂直方向,并旋转 `-180°` 来达到正常阅读的效果。 ##### 结合 `class-name` 属性应用特定列的样式 如果只需要某些列的表头文字垂直显示,则可以通过 `class-name` 属性指定特定类名,并仅对该类名生效。例如: ```vue <template> <el-table :data="tableData"> <el-table-column v-for="(header, index) in tableHeaders" :key="index" :prop="header.prop" :label="header.label" align="center" :class-name="header.vertical ? 'vertical-header' : ''" ></el-table-column> </el-table> </template> <style> /* 定义垂直表头样式 */ .vertical-header .cell { writing-mode: vertical-lr; transform: rotate(-180deg); } </style> <script> export default { data() { return { tableHeaders: [ { prop: 'name', label: '姓名', vertical: false }, { prop: 'age', label: '年龄', vertical: true }, { prop: 'address', label: '地址', vertical: false } ], tableData: [ { name: '张三', age: 28, address: '北京市朝阳区' }, { name: '李四', age: 30, address: '上海市浦东新区' } ] }; } }; </script> ``` 在此例子中,只有设置了 `vertical: true` 的列才会应用垂直显示效果[^1]。 --- ### 总结 以上方案分别解决了两个核心问题:一是通过 `v-for` 动态生成表头;二是借助 CSS 调整表头文字的方向使其垂直显示。两者结合起来即可满足需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涔溪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值