zoukankan      html  css  js  c++  java
  • Vue3中使用svg

    1)安装插件

    npm install svg-sprite-loader --save-dev

    2)封装svgIcon组件

    在componemts里新建svgIcon文件夹,新建index.vue,封装成组件

    <template>
        <svg :class="svgClass" aria-hidden="true">
            <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 {
             1em;
            height: 1em;
            fill: currentColor;
            overflow: hidden;
        }
    </style>

    3)在src下新建icons文件夹,此文件夹下新建svg文件夹。其中svg文件夹存放所有的svg文件

    4)在icons下新建index.js,由于配置svg

    import Vue from 'vue'
    import SvgIcon from '@/components/svgIcon' 
    
    Vue.component('svg-icon', SvgIcon)
    
    const requireAll = requireContext => requireContext.keys().map(requireContext)
    const req = require.context('./svg', false, /.svg$/)
    requireAll(req)

    5)在svg文件夹下新建user.svg。打开阿里图标仓库,找一个用户的图标的svg并复制,粘贴到user.svg中

    6)在vue.config.js添加下面的内容

    const path = require('path')
    
    function resolve(dir) {
      return path.join(__dirname, '.', dir)
    }
    
    module.exports = {
      chainWebpack: config => {
        config.module.rules.delete("svg"); //重点:删除默认配置中处理svg,
        config.module
          .rule('svg-sprite-loader')
          .test(/.svg$/)
          .include
          .add(resolve('src/icons')) //处理svg目录
          .end()
          .use('svg-sprite-loader')
          .loader('svg-sprite-loader')
          .options({
            symbolId: 'icon-[name]'
          })
      },
    }

    7)在main.js里引入

    import './icons'

    8)在页面中使用

     svg图标<svg-icon icon-class="user"></svg-icon>

    其中icon-class指定的是svg文件的名字。查看页面如下:

    就是这么简单,你学废了吗?感觉有用的话,给笔者点个赞吧 !
  • 相关阅读:
    Java内存模型
    mysql通过“延迟关联”进行limit分页查询优化的一个实例
    RabbitMQ(二):相应机制、持久化、负载均衡分发
    RabbitMQ(一):安装配置、用户权限
    S7.Net与西门子PLC通讯——纯新手必看
    [.net core] 创建和发布NuGet包 (dotnet CLI)
    [收藏]2018年10月最新全网可用接码打码平台 [若快已挂]
    如何写出无法维护的代码
    C# ——Parallel类
    .net语音播放,自定义播报文字
  • 原文地址:https://www.cnblogs.com/zys2019/p/15093222.html
Copyright © 2011-2022 走看看