element ui + vue 表格多选后选中行高亮/变色
element ui官网的table多选后的样式如下图 我们想要的效果如下图(选中的是有底色/高亮的) 用到的主要知识点如下图(2张)
为了方便后期修改颜色,我们把样式写在了公共样式中–common.less
//table选中高亮 .el-table .slecleRowColor { background: #EAF4FF !important; } //改变element ui自带的hover高亮颜色 .el-table tbody tr:hover > td { background-color: #EAF4FF !important; }
在界面组件中—index.vue 主要代码 :row-class-name="rowClass" ,@selection-change="handleSelectionChange" html:
<el-table ref="inspectTable" :data="inspectTable.data" size="mini" :row-class-name="rowClass" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="55"></el-table-column> <el-table-column v-for="item in inspectTable.columns" :key="item[inspectTable.key]" :show-overflow-tooltip="true" :prop="item.prop" :label="item.label" :width="item.width" :sortable="item.sortable" :formatter="item.formatter"></el-table-column> <el-table-column label="操作" width="150px"> <template slot-scope="scope"> <el-button size="mini" type="text" v-if="judge(inspection-list:update)" @click="btnEvent(edit,scope.row)">编辑</el-button> <el-button size="mini" type="text" v-if="judge(inspection-list:delete)" @click="btnEvent(deleteInfo,scope.row)">删除</el-button> <el-button size="mini" type="text" @click="btnEvent(detail,scope.row)">详情</el-button> </template> </el-table-column> </el-table>
script:
<script> export default { data () { return { selectRow: [],//选中的行 selectData: [],//选中的数据 }, watch: { //监听多选的选择状态、数据 selectData (data) { this.selectRow = [] if (data.length > 0) { data.forEach((item, index) => { this.selectRow.push(this.inspectTable.data.indexOf(item)) }) } } }, //勾选数据行的 Checkbox 时触发的事件 rowClass ({ row, rowIndex }) { if (this.selectRow.includes(rowIndex)) { return slecleRowColor ; } }, // 选中的信息 handleSelectionChange (val) { this.selectData = val }, }
style: (这个路径根据自己文件的来)
<style lang="less"> @import ../../assets/css/Common.less; </style>
注意: watch中的 this.selectRow.push(this.inspectTable.data.indexOf(item))中的inspectTable.data是根据html部分的 :data="inspectTable.data"来写 如果不对应会报错,如下图: