element-plus 的tree 选中的节点样式
时间: 2025-06-29 12:13:46 AIGC 浏览: 55
### 修改 Element Plus Tree 组件选中节点样式
为了自定义 `element-plus` 的树组件 (`el-tree`) 中已选中节点的样式,可以利用 CSS 和 scoped 样式来实现特定需求。默认情况下,当一个节点被选中时会应用 `.is-current` 类[^1]。
#### 使用 Scoped 样式覆盖默认样式
通过 Vue 单文件组件中的 `<style scoped>` 来限定作用域内的样式只影响当前组件:
```html
<template>
<div class="custom-tree">
<el-tree :data="treeData" @node-click="handleNodeClick"></el-tree>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
const treeData = [
{
label: "Level one",
children: [{ label: "Level two" }]
}
];
function handleNodeClick(node) {
console.log('Clicked on:', node);
}
</script>
<style scoped>
.custom-tree .el-tree-node.is-current>.el-tree-node__content {
background-color: #ffeb3b !important; /* 自定义背景颜色 */
}
/* 可以进一步调整其他样式属性 */
.custom-tree .el-tree-node.is-current>.el-tree-node__content:hover {
color: white;
font-weight: bold;
}
</style>
```
上述代码片段展示了如何改变选中项的颜色并设置鼠标悬停效果。注意这里使用了 `!important` 关键字确保优先级高于框架自带样式。
#### 利用深类选择器穿透子组件样式
如果遇到某些样式无法生效的情况,则可能是因为这些样式是由内部更深层次的组件渲染出来的。此时可采用 `/deep/` 或者 `>>>` 符号来进行深层嵌套的选择器匹配(取决于使用的预处理器):
```css
/* 对于 PostCSS (Vue CLI 默认配置), 使用 ::v-deep */
<style scoped>
::v-deep(.el-tree-node.is-current>.el-tree-node__content){
border-left: 4px solid red;
}
</style>
```
这种方法允许开发者突破scoped样式的限制,从而能够修改到更深一层的DOM结构上的样式。
阅读全文
相关推荐




















