美文网首页
vue 集成svg

vue 集成svg

作者: 从不放弃 | 来源:发表于2020-06-12 14:16 被阅读0次

    1、创建svgIcon组件

    <template>
        <svg :class="svgClass" aria-hidden="true" v-on="$listeners">
            <use :xlink:href="iconName" />
        </svg>
    </template>
    
    <script>
    export default {
        name: 'SvgIcon',
        props: {
            iconClass: {
                type: String,
                required: true
            },
            className: {
                type: String,
                default: ''
            }
        },
        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>
    
    

    2、在assets创建icons目录、svg目录、index.js

    svg目录:存放.svg文件
    index.js: 注册到全局

    //index.js
    
    import Vue from 'vue';
    import SvgIcon from '@/components/SvgIcon'; // svg组件
    
    // register globally
    Vue.component('svg-icon', SvgIcon);
    
    const req = require.context('./svg', false, /\.svg$/);
    const requireAll = requireContext => requireContext.keys().map(requireContext);
    requireAll(req);
    
    icons目录.png

    3、集成到项目中 main.js中引入

    import './assets/icons';
    

    4、项目使用

    <svg-icon icon-class="wechat"></svg-icon>
    

    相关文章

      网友评论

          本文标题:vue 集成svg

          本文链接:https://www.haomeiwen.com/subject/hvfhyctx.html