前端开发必备: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'}"/>
相关推荐
Jedi Hongbin4 分钟前
Three.js shader内置矩阵注入
前端·javascript·three.js
etcix5 分钟前
dmenux.c: integrate dmenu project as one file
c语言·前端·算法
RickyWasYoung9 分钟前
【代码】matlab-遗传算法工具箱
开发语言·matlab
光影少年18 分钟前
react16到react19更新及底层实现是什么以及区别
前端·react.js·前端框架
超人不会飛21 分钟前
vue3 markdown组件|大模型应用专用
前端·vue.js·人工智能
じòぴé南冸じょうげん22 分钟前
微信小程序如何进行分包处理?
前端·小程序
Jolyne_29 分钟前
Table自定义单元格渲染分享
前端
加载中36132 分钟前
pnpm时代包版本不一致问题还是否存在
前端·面试·npm
老马啊老马32 分钟前
30 分钟搞定!Docker+Jenkins+Nginx + 腾讯云实现前端 CI/CD
前端
VillenK33 分钟前
用插件的方式注入Vue组件
前端·vue.js