如何在某个元素hover的时候,行和列都加上背景颜色,并且本身就有颜色需要重叠加深(antd of vue 中的 table)

在这里插入图片描述

需求主要是方便用户可以看出自己鼠标悬停的时候,对准的行和列

这里明显可以看出,鼠标悬停在箭头方向的时候,横着的背景颜色加深(这里是antd中table表格中自己 ‘行’ 中的hover)代码如下.ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td { background: #e6f7ff; },但是因为也想让 ‘列’ 中也添加hover背景颜色
在vue中,通过给div加ref属性

<a-table
	<template
		<div
          ref="tableCell"
          @mouseover="mouseover(index)"
          @mouseleave="mouseleave"
        >
          <slot>
       		...
          </slot>
		</div>
	</template>
</a-table>
  mouseover(index) {
 	  // 鼠标进入的时候
      let difference = 7;  // 代表每行有多少列
      this.$refs.tableCell.forEach((table) => {
        if (table.offsetParent.cellIndex % difference === index) {  
        // offsetParent.cellIndex 则是table表格中的每个td的唯一标识索引,例如28个,则是从第一行第一个为1,按顺序
        // 当时我forEach的时候,直接用的用的是index,问题是,我的table表格会改变,但是根据vue的diff算法中,已存在的td索引值不会改变
          if (table.style.backgroundColor == "") {
          // 没有背景颜色  就加上一个className
            table.className = "addBgc";
          }else{
          // 原来有颜色,需要加深颜色,所以在父元素上添加bgc
            table.parentNode.style.backgroundColor = "rgb(230, 247, 255)"
          }
        }
      });
    },
    mouseleave() {
      // 鼠标离开的时候
      this.$refs.tableCell.forEach((table) => {
      	// 如果添加了颜色就需要清除
        if ((table.className = "addBgc")) {
          table.className = "removeBgc";
        }
        if (table.parentNode.style.backgroundColor) {
          table.parentNode.style.backgroundColor = ''
        }
      });
    },
<style lang="less">
.addBgc {
  background-color: rgb(230, 247, 255);
  transition: 0.5s;
}
.removeBgc {
  transition: 0.5s;
}

</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Vue页面获取Ant Design Table的列名,你可以使用Ant Design Table组件的`columns`属性。这个属性包含了Table的所有列信息,其每一列都有一个`title`属性表示该列的标题。你可以通过访问`columns`属性并遍历所有列,来获取所有列的标题。 下面是一个示例代码: ```html <template> <a-table :columns="columns" :data-source="dataSource"></a-table> </template> <script> export default { data() { return { columns: [ { title: '列1', dataIndex: 'column1', key: 'column1', }, { title: '列2', dataIndex: 'column2', key: 'column2', }, { title: '列3', dataIndex: 'column3', key: 'column3', }, ], dataSource: [ { column1: '内容1', column2: '内容2', column3: '内容3', }, ], }; }, methods: { getColumnTitles() { const titles = this.columns.map((column) => column.title); console.log(titles); }, }, }; </script> ``` 在上面的代码,我们定义了一个Ant Design Table组件,其包含了三个列,每个列都有一个`title`属性。在`getColumnTitles`方法,我们通过遍历`columns`属性获取所有列的标题,并将它们输出到控制台。 ### 回答2: 在Vue页面,可以通过Ant Design Table组件提供的属性来获取列名。 首先,需要导入Table组件和Column组件: ```javascript import { Table, Column } from 'ant-design-vue'; ``` 然后,在Vue的`data`定义一个数组来存储表格的列名: ```javascript data() { return { columns: [ { dataIndex: 'name', title: '姓名' }, { dataIndex: 'age', title: '年龄' }, { dataIndex: 'gender', title: '性别' }, ], // 其他数据... } } ``` 在Vue的模板,使用Table和Column组件来显示表格: ```html <Table :columns="columns" :dataSource="data"> <Column v-for="column in columns" :key="column.dataIndex" :title="column.title" :dataIndex="column.dataIndex" /> </Table> ``` 通过上述代码,即可在Vue页面获取Ant Design Table的列名。在columns数组定义的每个对象,`dataIndex`表示该列对应的数据字段,`title`表示该列的标题名称。在模板,使用Column组件的`title`和`dataIndex`属性来显示表格的列名。 ### 回答3: 在Vue页面获取Ant Design Table的列名,我们可以通过以下步骤实现: 1. 在Vue页面的template引入Ant Design Table组件,例如: ``` <template> <a-table :columns="columns" :data-source="data"></a-table> </template> ``` 2. 在Vue页面的script定义columns数组,用于存储列的配置信息,例如: ``` <script> export default { data() { return { columns: [ { title: '列名1', dataIndex: 'column1' }, { title: '列名2', dataIndex: 'column2' }, { title: '列名3', dataIndex: 'column3' }, ], data: [ { column1: '数据1', column2: '数据2', column3: '数据3' }, { column1: '数据4', column2: '数据5', column3: '数据6' }, // 其他数据... ], }; }, }; </script> ``` 在`columns`数组定义每一列的`title`属性,即为列的名称。在`data`数组定义每一行的具体数据,其的`dataIndex`属性与`columns`数组的`title`属性相对应。 这样,我们就成功获取了Ant Design Table的列名。在实际运行时,我们可以根据自己的需求修改`columns`数组和`data`数组的内容,实现不同的列和数据展示效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值