Vue3实现大屏el-table表格隔行变色、表格无任何边框、鼠标悬浮变色

首先,我们采用Vue3结合element plus来开发项目,所以上述表格 采用element plus 中的el-table来设计

一、实现表格没有任何边框,实现代码如下所示:

element plus 中el-table自带的属性

   --el-table-border-color: none;
  --el-table-bg-color: none;
  --el-table-tr-bg-color: none"

<div class='moduleTable'>
      <el-table :data="tableData"  style="width: 450px;margin:0 auto; padding: 17px 0;
                --el-table-border-color: none;
                --el-table-bg-color: none;
                --el-table-tr-bg-color: none"
                :row-class-name='tableRowClassName'
                :cell-style="{'color':'#FFFFFF','text-align':'center'}"

//设置表格头的样式和字体
                :header-cell-style="{'background':'#375A88','color':'rgba(2,217,253,0.8)','text-align':'center'}"
      >
        <el-table-column prop="department" label="科室" />
        <el-table-column prop="totalNumber" label="总号源数"  />
        <el-table-column prop="orderNumber" label="预约数" />
        <el-table-column prop="orderRate" label="预约率(%)" />
      </el-table>
    </div>

二、实现表格隔行变色

在setup中

    function tableRowClassName(rowIndex:any){

      if (rowIndex.rowIndex % 2 != 0) {
        console.log('rowIndex',rowIndex.rowIndex)
        return 'evenRow';
      }
      return 'oddRow';
    }

在style中

<style lang="scss" >
.evenRow {
  background: #0C385E !important;
}
.oddRow{
  background:#062340 !important;
}
</style>

三、改变鼠标悬浮颜色

<style lang="scss"> 
.selectOption{
  .el-input__wrapper{
    background-color: 	rgba(15,112,169,0.5) !important;
    border-radius: 50px;
    box-shadow: 0 0 0 0;
    padding: 0;
    border: 1px solid #0F70A9;
    width: 118px;
  }
  .el-input__inner {
    padding-left: 15px;
    line-height: 32px;
    font-size: 16px;
    color: #02D9FD;
  }
  .el-input__suffix{
    padding-right: 15px;
  }
  .el-select .el-input__wrapper.is-focus {
    box-shadow: 0 0 0 0 !important;
  }
  .el-select .el-input.is-focus .el-input__wrapper{
    box-shadow: 0 0 0 0 !important;
  }
}
</style>

实现 `el-table` 表格和 `el-input` 的搜索功能,可以借助 `computed` 计算属性和 `watch` 监听器来实现。 首先,在 `el-table` 中添加一个 `el-input` 组件,用于输入搜索关键字,如下所示: ```html <template> <div> <el-input v-model="searchText" placeholder="请输入搜索关键字"></el-input> <el-table :data="filteredData" :columns="columns"> </el-table> </div> </template> ``` 然后,在 `data` 中定义 `searchText` 和 `tableData`,分别表示搜索关键字和表格数据,如下所示: ```javascript data() { return { searchText: '', tableData: [ { name: '张三', age: 18, address: '北京市海淀区' }, { name: '李四', age: 20, address: '上海市浦东新区' }, { name: '王五', age: 22, address: '广州市天河区' }, { name: '赵六', age: 24, address: '深圳市南山区' } ], columns: [ { prop: 'name', label: '姓名' }, { prop: 'age', label: '年龄' }, { prop: 'address', label: '地址' } ] } } ``` 接着,在 `computed` 中定义 `filteredData` 计算属性,用于过滤数据,如下所示: ```javascript computed: { filteredData() { const searchText = this.searchText.trim().toLowerCase(); if (searchText) { return this.tableData.filter((row) => { return Object.keys(row).some((key) => { return String(row[key]).toLowerCase().indexOf(searchText) > -1; }); }); } else { return this.tableData; } } } ``` 在 `filteredData` 计算属性中,使用 `trim` 方法去除搜索关键字的前后空格,使用 `toLowerCase` 方法将搜索关键字转换为小写字母,然后使用 `filter` 方法过滤表格数据,使用 `Object.keys` 方法获取每一行数据的所有属性名,使用 `some` 方法判断每一行数据的属性值是否包含搜索关键字,如果包含则返回 `true`,否则返回 `false`。 最后,在 `watch` 中监听 `searchText` 的变化,实时更新过滤后的数据,如下所示: ```javascript watch: { searchText() { this.$nextTick(() => { this.$refs.table.doLayout(); }); } } ``` 在 `watch` 中,使用 `$nextTick` 方法等待 DOM 更新后,再调用 `doLayout` 方法实时更新过滤后的数据。 通过以上步骤,即可实现 `el-table` 表格和 `el-input` 的搜索功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值