Element UI-给树形控件添加图标

Element UI-给树形控件添加图标

element ui 提供的树形控件默认是不支持添加图标的,如下所示:
在这里插入图片描述

如果要想要在节点自定义树形控件的图标,可以使用slot-scope,代码如下:
在这里插入图片描述

其代码如下:

<!--
    @author: itmacy
    @desc: 自定义树节点图标
-->
<template>
  <div>
        <el-tree
                :data="data"
                :props="defaultProps"
                @node-click="handleNodeClick">
                  <span slot-scope="{ node, data }">
                        <i v-if="data.children" class="el-icon-folder"></i>
                        <i v-else class="el-icon-collection-tag"></i>
                        <span style="margin-left: 10px">{{ node.label}}</span>
                  </span>
        </el-tree>
  </div>
</template>
<script>
  export default {
    data () {
      return {
        data: [{
          label: '一级 1',
          children: [{
            label: '二级 1-1',
            children: [{
              label: '三级 1-1-1'
            }]
          }]
        }, {
          label: '一级 2',
          children: [{
            label: '二级 2-1',
            children: [{
              label: '三级 2-1-1'
            }]
          }, {
            label: '二级 2-2',
            children: [{
              label: '三级 2-2-1'
            }]
          }]
        }, {
          label: '一级 3',
          children: [{
            label: '二级 3-1',
            children: [{
              label: '三级 3-1-1'
            }]
          }, {
            label: '二级 3-2',
            children: [{
              label: '三级 3-2-1'
            }]
          }]
        }],
        defaultProps: {
          children: 'children',
          label: 'label'
        }
      }
    },
    methods: {
      handleNodeClick (data) {
        console.log(data)
      }
    }
  }
</script>

最终效果如下:
在这里插入图片描述

### 修改 Element UI 树形控件中的三角形图标为目标图标Element UI树形控件中,默认情况下会显示一个用于展开/折叠节点的三角形图标。如果希望将其替换为其他图标(例如原点),可以通过自定义 `render` 函数或者覆盖默认的 CSS 样式来实现。 #### 方法一:通过 `render` 函数自定义图标 Element UI 提供了 `render-content` 属性,允许开发者完全控制树节点的内容渲染方式。以下是具体实现: ```vue <template> <el-tree :data="treeData" node-key="id" default-expand-all> <span slot-scope="{ node, data }"> <!-- 自定义图标 --> <i class="custom-icon el-icon-circle-check"></i> <!-- 替换为原点图标 --> <!-- 显示节点名称 --> <span style="margin-left: 8px;">{{ node.label }}</span> </span> </el-tree> </template> <script> export default { data() { return { treeData: [ { id: 1, label: 'Node 1', children: [{ id: 2, label: 'Child Node 1' }] }, { id: 3, label: 'Node 2' } ] }; } }; </script> <style scoped> .custom-icon { font-size: 16px; } </style> ``` 在此示例中,使用了一个名为 `el-icon-circle-check` 的图标作为替代方案[^4]。可以根据实际需求更换为其他图标库中的目标图标--- #### 方法二:通过 CSS 覆盖默认样式 另一种更简单的方法是直接通过 CSS 覆盖默认的三角形图标样式。以下是一个具体的例子: ```css /* 移除默认的三角形图标 */ .el-tree-node__expand-icon.is-leaf, .el-tree-node__expand-icon:not(.is-leaf) { display: none !important; } /* 添加新的原点图标 */ .el-tree-node > .el-tree-node__content > .el-tree-node__label::before { content: "\2022"; /* Unicode 原点字符 */ margin-right: 8px; color: #99a9bf; /* 设置颜色 */ font-size: 16px; /* 设置大小 */ } ``` 此方法无需修改模板逻辑,仅需调整样式即可生效。注意,这种方法适用于简单的场景,但如果需要动态切换图标,则推荐使用方法一。 --- #### 注意事项 1. 如果项目中有多个树形控件,并且只希望其中一个应用新图标,请确保 CSS 或 `scoped` 样式的范围限定到特定组件。 2. 使用 `render` 函数时需要注意性能问题,尤其是在大规模数据集下可能会增加渲染开销。 --- ### 性能优化建议 对于大型树结构,可以考虑启用虚拟滚动技术以减少 DOM 渲染压力。Element Plus 已经支持这一特性,而原始版本的 Element UI 可借助第三方插件或手动实现类似的机制。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值