vue项目引入图标

本文介绍了如何在前端项目中使用SVG图标,包括SymbolSVG格式的图标引入方式和SVG-sprite-loader的配置步骤,以及如何创建自定义SVG组件和全局注册,最后展示了在main.js中引入和使用SVG图标的方法。
摘要由CSDN通过智能技术生成

1.Symbol SVG图片格式

  1. 拷贝下载项目,复制inconfont.js到资源文件目录下,并引入inonfont.js文件
  2. 加入通用css代码(引入一次就行)
    .icon {
        width: 1.1em;
        height: 1.1em;
        vertical-align: -0.15em;
        fill: currentColor;
        overflow: hidden;
    }
    
  3. 挑选相应图标并获取类名,应用于页面
    <svg class="icon" aria-hidden="true">
        <use xlink:href="#icon-xxx"></use>
    </svg>
    

2.使用svg格式插画、图片

  1. 安装svg-sprite-loader
    npm install svg-sprite-loader -D
    
    或者yarn安装:
    yarn add svg-sprite-loader -D
    
  2. vue.config.js中添加配置:
    chainWebpack: config => {
        const svgRule = config.module.rule('svg')
        svgRule.uses.clear()
        svgRule
            .use('svg-sprite-loader')
            .loader('svg-sprite-loader')
            .options({
                symbolId: 'icon-[name]',
            })
    },
    
  3. 在公共组件components下创建SvgIcon文件夹,在index.vue中引入:
    <template>
        <svg :class="svgClass" aria-hidden="true">
            <use :xlink:href="iconName"></use>
        </svg>
    </template>
    
    <script>
    export default {
        name: 'svg-icon',
        props: {
            iconClass: {
                type: String,
                required: true,
            },
            className: {
                type: String,
            },
    	},
        computed: {
            iconName () {
                return `#icon-${this.iconClass}`
            },
            svgClass () {
                if (this.className) {
                    return 'svg-icon ' + this.className
                } else {
                    return 'svg-icon'
                }
            },
    	},
    }
    </script>
    
    <style scoped>
    	.svg-icon {
    	  width: 1em;
    	  height: 1em;
    	  vertical-align: -0.15em;
    	  fill: currentColor;
    	  overflow: hidden;
    	}
    </style>
    
  4. 在src下创建icons文件夹,svg文件夹下存放.svg文件,index.js中注入svg
    import Vue from 'vue'
    import SvgIcon from '@/components/SvgIcon'// svg组件
    
    // 注册到全局
    Vue.component('svg-icon', SvgIcon)
    
    const requireAll = requireContext => requireContext.keys().map(requireContext)
    // eslint-disable-next-line
    const req = require.context('./svg', false, /\.svg$/)
    requireAll(req)
    
  5. 在main.js中引入:
    import './icons'
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值