Element Plus最新图标引入以及使用方法,icon动态组件,点击切换图标

最新版本的Element Plus已经移除了Font icon,以下引入以及使用方法为亲测可用的,但是不知道后续是否还会改变,大家可以借鉴一下。

本人使用版本  

"element-plus": "^1.3.0-beta.1",

"@element-plus/icons-vue": "^0.2.6",

 "typescript": "~4.1.5"

1.安装

# Choose a package manager you like.

# NPM
$ npm install @element-plus/icons-vue
# Yarn
$ yarn add @element-plus/icons-vue
# pnpm
$ pnpm install @element-plus/icons-vue

2.使用

基本使用方法官方文档写的很清楚,不再赘述,以下只做动态组件使用说明

需要在main.ts中统一导入

import * as ElIconModules from '@element-plus/icons-vue'

// 统一注册Icon图标
for (const iconName in ElIconModules) {
  if (Reflect.has(ElIconModules, iconName)) {
    const item = ElIconModules[iconName]
    app.component(iconName, item)
  }
}

 如果你使用的是ts,当数组下标为字符串时,会报错。,在ElIconModules[iconName]这里还会报错,解决方法是需要在ts.config.json中加入以下代码,看注释处

{
  "compilerOptions": {
    "target": "esnext",
    "module": "esnext",
    "strict": true,
    "jsx": "preserve",
    "importHelpers": true,
    "moduleResolution": "node",
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "sourceMap": true,
    "baseUrl": ".",
    "types": ["webpack-env"],
    "paths": {
      "@/*": ["src/*"]
    },
    "suppressImplicitAnyIndexErrors": true, //加入这段代码解决main.ts报错问题
    "lib": ["esnext", "dom", "dom.iterable", "scripthost"]
  },
  "include": [
    "src/**/*.ts",
    "src/**/*.tsx",
    "src/**/*.vue",
    "tests/**/*.ts",
    "tests/**/*.tsx"
  ],
  "exclude": ["node_modules"]
}

完成以上即可完成全局的图标注册

3.动态组件使用方法

    <el-icon :size="30">
      <component
        class="fold-menu"
        :is="iconName"
        @click="handleFoldClick"
      ></component>
    </el-icon>

在写项目时有一个需求是点击图标要进行图标切换,以往都是使用动态class的方式,但是现在因为Element Plus移除了iconfont,所以需要使用动态组件,下面上完整代码,一看便知,直接复制也可实现

<template>
  <div class="nav-header">
    <el-icon :size="30">
      <component
        class="fold-menu"
        :is="iconName"
        @click="handleFoldClick"
      ></component>
    </el-icon>
  </div>
</template>

<script lang="ts">
import { defineComponent, ref } from 'vue'

export default defineComponent({
  emits: ['foldChange'], //子传父
  setup(props, { emit }) {
    let iconName = ref('Fold')
    const isFold = ref(false)
    // 这里是点击图标可以进行切换,自己想的实现方法,可能不太好,但是功能实现了
    const handleFoldClick = () => {
      isFold.value = !isFold.value
      if (isFold.value == false) {
        iconName.value = 'Expand'
      } else {
        iconName.value = 'Fold'
      }
      emit('foldChange', isFold.value)
    }
    return {
      iconName,
      handleFoldClick,
      isFold
    }
  }
})
</script>

<style scoped lang="less">
.fold-menu {
  cursor: pointer;
}
</style>

 本人也是菜鸟,也是东拼西凑加上自己实践,希望能帮到各位吧,马上过年了,祝各位程序猿新年快乐,万事胜意~

  • 16
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 可以使用 element-plus 组件库中的 el-icon 组件引入 icon 图标。这个组件可以接受一个 type 属性,用来指定图标的名称。例如: ``` <el-icon type="search"></el-icon> ``` 这样就可以在页面上显示一个搜索图标。 需要注意的是使用 element-plus 组件库需要先安装 element-plus 库。 ``` npm install element-plus ``` 在 main.js 中引入 ``` import Element from 'element-plus' Vue.use(Element) ``` 通过这样的方式就可以使用 el-icon 组件了。 ### 回答2: element-plus 是基于 Vue.js 的 UI 组件库,其中封装了许多常用的 UI 组件,同时也提供了一些图标来帮助用户更直观地理解 UI 组件使用。但是,element-plus 内置的图标可能不满足每个用户的需求,因此需要引入自定义的图标。 要引入自定义的图标,首先需要找到自己想要使用图标集,例如阿里图标库(iconfont)、Google Material Icons 等。在本例中,我们将以阿里图标库为例,介绍如何引入自定义的图标。 1. 在阿里图标库中找到想要使用图标集,并下载到本地。 2. 在 main.js 中引入阿里图标库的样式代码,并调用 add 方法注册需要使用图标文件: ``` import '~~/iconfont.css' import { ElIcon } from 'element-plus' ElIcon.add({ star: '<svg viewBox="0 0 1024 1024" p-id="3799" width="1em" height="1em"><path d="M985.6 398.4l-307.2-44.8L542.72 72.96c-17.28-32-52.48-32-69.76 0L346.88 353.6 38.4 398.4C4.48 406.4-14.08 441.6 2.88 471.04l205.44 276.48-51.2 307.2c-3.52 20.48 4.48 41.6 21.76 53.76 8.96 6.4 19.2 9.6 29.44 9.6 8.96 0 18.56-2.56 27.52-9.6L512 772.48l286.72 150.4c8.96 6.4 18.56 9.6 27.52 9.6 10.24 0 20.48-3.2 29.44-9.6 17.28-12.16 25.28-33.28 21.76-53.76L815.36 747.52l205.44-276.48c16.64-29.44-2.88-64.64-35.84-72.64z" fill="" p-id="3800"></path></svg>' }) app.component('ElIcon', ElIcon) ``` 其中,`import '~~/iconfont.css'` 是引入阿里图标库的样式文件,`ElIcon.add()` 中的 star 是注册的图标名称,SVG 格式的图片代码为图标的实际样式代码,最后在应用中注册 ElIcon 组件。 3. 在应用中使用自定义的图标: ``` <el-icon name="star"></el-icon> ``` 其中的 name 属性即为注册时的图标名称,即可显示出自定义的图标了。 总结来说,使用 element-plus 自带的图标可能不能满足每个用户的需求,因此可以通过引入自定义的图标使用,具体步骤是先找到适合的图标集并下载到本地,然后将图标库的样式文件引入到 main.js 中,并注册需要使用图标文件。注册完成后,在应用中即可通过 el-icon 组件的 name 属性来使用自定义的图标。 ### 回答3: element-plus 是一款基于 Vue3 的 UI 组件库,拥有丰富的组件,包括图标组件图标组件是一种轻量级的 UI 设计元素,可以用来代替文字标签,使界面更加清晰易懂。本文将介绍如何引入 element-plus 的 icon 图标。 1.安装 element-plus 在引入 icon 图标之前,需要先安装 element-plus。可以通过以下命令来安装: ``` npm install element-plus --save ``` 2.引入 icon 图标 在 Vue 组件引入 element-plus 的 icon 图标,可以使用以下步骤: (1)在 main.js 中全局引入 element-plus 组件库: ```javascript import { createApp } from 'vue'; import ElementPlus from 'element-plus'; import 'element-plus/lib/theme-chalk/index.css'; import App from './App.vue'; createApp(App).use(ElementPlus).mount('#app'); ``` (2)在 Vue 组件使用 element-plus 的 icon 图标: ```javascript <template> <div> <el-icon name="el-icon-search"></el-icon> </div> </template> ``` 上面的代码中,`el-icon` 标签表示 icon 图标组件,通过 `name` 属性指定要显示的图标,这里使用的是 `el-icon-search`,表示显示搜索图标。 3.使用自定义图标 如果 element-plus 提供的默认图标不能满足需求,可以使用自定义图标。以下是自定义图标的步骤: (1)在项目的 public 文件夹下创建 icons 文件夹,并在该文件夹下添加 SVG 图标文件。 (2)在 main.js 中引入 `@element-plus/icons`: ```javascript import '@element-plus/icons'; ``` (3)在 Vue 组件使用自定义图标: ```javascript <template> <div> <i class="el-icon-myicon"></i> </div> </template> <style> .el-icon-myicon:before { content: ''; display: inline-block; width: 1em; height: 1em; background-image: url('/icons/myicon.svg'); background-repeat: no-repeat; background-size: contain; transform: translateY(-3px); /*调整图标垂直方向位置*/ } </style> ``` 上面的代码中,`el-icon-myicon` 是自定义图标的类名,在样式表中定义了 `before` 伪元素,通过 `background-image` 属性指定了 SVG 图标文件的路径,并通过 `background-size` 属性指定 SVG 图标文件的大小。同时通过 `transform` 属性调整了图标的垂直方向位置。 总结 以上就是element-plus引入icon图标方法element-plus提供了丰富的图标组件,可以满足大多数项目的需求。如果有特殊需求,可以通过自定义图标的方式实现。在使用图标组件时,要注意添加适当的样式,使图标显示效果更佳。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值