前端开发必备:icon封装技巧

main.js
复制代码
import svgIcon from '@/components/SvgIcon'
Vue.component('svg-icon-full', svgIcon)
const requireAll = requireContext => requireContext.keys().map(requireContext)
const req = require.context('@/assets/icons/svg', false, /\.svg$/)  // icon位置
requireAll(req)
SvgIcon组件
复制代码
<template>
  <i v-if="iconFileName.indexOf('el-icon-') === 0" :class="iconFileName" />
  <svg v-else class="svg-icon" aria-hidden="true" v-on="$listeners">
    <use :xlink:href="`#icon-${iconFileName}`" rel="external nofollow" :class="[iconColor]"/>
  </svg>
</template>

<script>
export default {
  name: 'SvgIcon',
  props: {
    iconFileName: {
      type: String,
      required: true
    },
    iconColor: {
      type: String,
      default: ''
    }
  }
}
</script>

<style scoped>
.svg-icon {
  width: 1em;
  height: 1em;
  overflow: hidden;
  vertical-align: -0.15em;
  fill: currentColor;
}
</style>
SvgIcon调用

icon-file-name="文件名"

复制代码
<svg-icon-full icon-file-name="alarm" :style="{width: '14px', height: '14px', color: '#FF4621'}"/>
相关推荐
落魄江湖行几秒前
进阶篇四 Nuxt4 Server Routes:写后端 API
前端·vue.js·typescript·nuxt4
萧行之1 分钟前
解决Microsoft Edge/Hotmail登录报错(15/25/2603、0x80190001)
前端·microsoft·edge
历程里程碑1 分钟前
Linux 50 IP协议深度解析:从报头结构到子网划分与NAT
java·linux·开发语言·网络·c++·python·智能路由器
aq55356005 分钟前
Laravel2.x:被遗忘的PHP框架遗珠
开发语言·汇编·c#
光泽雨9 分钟前
c#对object sender ,EventArgs e 的解释
开发语言·c#
绿豆人11 分钟前
go语言的Reflect包
java·开发语言·数据结构
Eiceblue12 分钟前
C# 删除 PDF 页面:单页 / 多页批量删除技巧
前端·pdf·c#
悟空瞎说13 分钟前
从isMounted到跨页面状态:高级前端如何优雅解决订单场景的“幽灵陷阱”(附React/Vue完整代码)
前端·javascript
C_fashionCat15 分钟前
【2026面试题】前端实际场景去考察原理
前端·vue.js·面试
落魄江湖行15 分钟前
进阶篇三 Nuxt4 Nitro 引擎:Nuxt 的服务端核心
前端·vue.js·typescript·nuxt4