在使用elementPlus的tree组件时,需要对它进行样式的重写,下面是相关代码
<script setup>
import { ref } from 'vue'
const data = [
{
label: 'Level one 1',
children: [
{
label: 'Level two 1-1',
children: [
{
label: 'Level three 1-1-1'
}
]
}
]
},
{
label: 'Level one 2',
children: [
{
label: 'Level two 2-1',
children: [
{
label: 'Level three 2-1-1'
}
]
},
{
label: 'Level two 2-2',
children: [
{
label: 'Level three 2-2-1'
}
]
}
]
},
{
label: 'Level one 3',
children: [
{
label: 'Level two 3-1',
children: [
{
label: 'Level three 3-1-1'
}
]
},
{
label: 'Level two 3-2',
children: [
{
label: 'Level three 3-2-1'
}
]
}
]
}
]
</script>
<template>
<div class="tree_box">
<el-tree style="max-width: 600px" :data="data" />
</div>
</template>
<style scoped lang="scss">
.tree_box {
background-color: purple;
width: 400px;
height: 400px;
padding: 100px;
}
:deep(.el-tree) {
background-color: transparent; // 整个tree组件的背景色
.el-tree-node:focus > .el-tree-node__content {
background: black !important; // tree选中之后的背景色
}
.el-tree-node__content {
&:hover {
background: black; // 鼠标hover背景色
}
}
.el-tree-node__label {
color: #fff; // 文字颜色
}
}
</style>
下面是各个class的解释:
- .el-tree:这个就是整个tree组件的根元素,这个class默认背景色是白色,看需求是变成透明还是什么颜色
- .el-tree-node:focus > .el-tree-node__content:这个class会在点击tree之后生效,默认是白色
- .el-tree-node__content:这个class是树组件的每一行的元素,鼠标hover时默认为白色背景,可以修改成需求的颜色
- .el-tree-node__label: 这个class是树文字的class,可以设置文字的相关样式