表格表头放在左侧,对应数据在右侧

9 篇文章 1 订阅
4 篇文章 0 订阅

顶部为表头下面为数据的表格代码,想把表头放在左侧,对应数据显示在右侧,也就是把表格的上下结构变成左右结构,怎么实现?

效果如图:

原图为:
这是原图
想要的结果为:
结果图

代码如下:

<div class="table-wrapper" v-if="data.type === 4">
  <div class="table-header">
     <div v-for="column in columnsFour" :key="column.key" class="header-cell">{{ column.title }}</div>
  </div>
  <div v-for="(item, index) in dataFour" :key="index" class="table-row">
     <div v-for="column in columnsFour" :key="column.key" class="data-cell">{{ item[column.key] }}</div>
  </div>
</div>

数据如下:

	dataFour: [
        {
          name: 'John Brown',
          age: 18,
          address: 'New York No. 1 Lake Park',
          date: '2016-10-03'
        },
        {
          name: 'Jim Green',
          age: 24,
          address: 'London No. 1 Lake Park',
          date: '2016-10-01'
        },
        {
          name: 'Joe Black',
          age: 30,
          address: 'Sydney No. 1 Lake Park',
          date: '2016-10-02'
        },
        {
          name: 'Jon Snow',
          age: 26,
          address: 'Ottawa No. 2 Lake Park',
          date: '2016-10-04'
        }
      ],
      columnsFour: [
        {
          title: 'Name',
          key: 'name'
        },
        {
          title: 'Age',
          key: 'age'
        },
        {
          title: 'Address',
          key: 'address'
        }
      ]

CSS样式如下:

.table-wrapper {
  display: flex;
  flex-direction: row;
}

.header-cell {
  padding: 8px 16px;
  border-bottom: 1px solid #ccc;
}
.table-row{
  border-top: 1px solid #ccc;
  border-right: 1px solid #ccc;
}
.table-header{
  border-top: 1px solid #ccc;
  border-left: 1px solid #ccc;
  border-right: 1px solid #ccc;
}
.data-cell {
  padding: 8px 16px;
  border-bottom: 1px solid #ccc;
}

.data-cell:last-child {
  border-right: none;
}

最终效果图:

最终效果图

这就OK啦!是不是很简单

可以通过在左侧树形控件中绑定点击事件,然后根据点击的节点信息来更新右侧表格的内容。具体实现过程如下: 1. 在左侧树形控件中绑定点击事件,可以使用 Vue 的 @click 或 v-on:click 指令来实现。例如: ```html <template> <div> <ul> <li v-for="node in treeData" :key="node.id" @click="handleNodeClick(node)"> {{ node.label }} </li> </ul> </div> </template> ``` 2. 在点击事件中更新右侧表格的内容。可以使用 Vue 的数据绑定来实现。例如: ```javascript <script> export default { data() { return { selectedNode: null, // 记录当前选中的节点 tableData: [], // 右侧表格数据 }; }, methods: { handleNodeClick(node) { // 更新选中的节点 this.selectedNode = node; // 根据选中的节点来获取对应表格数据 this.tableData = this.fetchTableData(node.id); }, fetchTableData(nodeId) { // 根据节点 ID 来获取对应表格数据 // ... }, }, }; </script> ``` 3. 在右侧表格中使用 computed 属性来动态获取数据。例如: ```html <template> <div> <table> <thead> <tr> <th>...</th> <!-- 表头内容 --> </tr> </thead> <tbody> <tr v-for="item in tableData" :key="item.id"> <td>...</td> <!-- 表格内容 --> </tr> </tbody> </table> </div> </template> <script> export default { computed: { tableData() { // 根据当前选中的节点来动态获取表格数据 return this.$parent.selectedNode ? this.$parent.tableData : []; }, }, }; </script> ``` 这样,当左侧树形控件中的节点被点击时,就会触发 handleNodeClick 方法,更新 selectedNode 和 tableData 数据,从而动态更新右侧表格的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值