欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ElementUI-table高亮问题

程序员文章站 2022-06-07 22:08:16
...

第一类:初始化或刷新界面默认第一行高亮

//1.0 加入:row-class-name="tableRowClassName"
<el-table  :data="tableData" style="width: 100%" :row-class-name="tableRowClassName">

//2.0 methods中写入方法
methods: {
  tableRowClassName({row, rowIndex}) {
     if (rowIndex === 0) {
       return 'youClassName';
     } 
     return '';
   }
 },
 //3.0 自定义默认高亮样式
 <style>
  .el-table .youClassName {
    background: 'red';
    color:'white'
  }
</style>

!!!注意:以上可以解决默认首行(任意行)高亮问题,但是–但是-但是,现在点击任意行让其显示也显示高亮时,问题来了,第一行和当前选中行均高亮,咱不看其他高亮方法,直接顺着刚才的已有代码下行继续实现功能

解决思路
1.不受高亮首行影响,继续写当前行高亮样式及写法且写成与高亮一样的样式;
2.在点击当前行的时候取掉首行不高亮;
直接上代码
1. <el-table 添加@row-click="onLink" :highlight-current-row="true"写成如下
<el-table  @row-click="onLink" :highlight-current-row="true" :row-class-name="tableRowClassName">
2.定义一个变量(个人想的办法,非官方推荐),当点击时候变化,取消第一行高亮
data() {
      return {
        isHigh: 0  //个人定义变量
      }
    },
//methods中方法改成这种
    tableRowClassName({
        row,
        rowIndex
      }) {
        if (this.isHigh === 0) {
          if (rowIndex === 0) {
            return 'success-row';
          }
        }
        return '';
      },
     onLink(row, cloumn, event) {
        this.isHigh =1;
        //xxxx其他操作
      },

css中样式添加hover效果及当前行高亮自定义样式

.el-table--enable-row-hover .el-table__body tr:hover>td {
      background-color: rgb(24, 144, 255);
      color: white;
    }

.el-table--striped .el-table__body tr.el-table__row--striped.current-row td,
   .el-table__body tr.current-row>td {
      color: white;
      background-color: rgb(24, 144, 255) !important;
    }

最后来一份完整代码

//css ---<style lang="scss">
.el-table .success-row {
      background: rgb(24, 144, 255);
      color: white;
    }

    .el-table--enable-row-hover .el-table__body tr:hover>td {
      background-color: rgb(24, 144, 255);
      color: white;
    }

    .el-table--striped .el-table__body tr.el-table__row--striped.current-row td,
    .el-table__body tr.current-row>td {
      color: white;
      background-color: rgb(24, 144, 255) !important;
    }
//templete代码

<el-table :data="deviceList" border @row-click="onLink" :highlight-current-row="true" :row-class-name="tableRowClassName">

//js代码
export default {
    data() {
      return {
        isHigh: 0
      }
    },
    methods: {
      onLink(row, cloumn, event) {
        this.isHigh =1;
      },
      tableRowClassName({
        row,
        rowIndex
      }) {
        if (this.isHigh === 0) {
          if (rowIndex === 0) {
            return 'success-row';
          }
        }
        return '';
      }
    }
  }

等下次遇到同类需求,就研究其他更好的办法,然后记录下来–2021-03-19 @gdr

相关标签: elementui vue