美文网首页
nuxtjs使用SVG 图标

nuxtjs使用SVG 图标

作者: 莫伊剑客 | 来源:发表于2020-12-29 15:16 被阅读0次
svg图片目录

一、安装依赖

npm i svg-sprite-loader -D

二、修改规则和新增规则,nuxt.config.js

// resolve定义一个绝对路径获取函数 
const path = require('path')
function resolve (dir) { return path.join(__dirname, dir) }
build: {
    /*
    ** You can extend webpack config here
    */
    extend (config, ctx) {
      // 排除 nuxt 原配置的影响,Nuxt 默认有vue-loader,会处理svg,img等
      // 找到匹配.svg的规则,然后将存放svg文件的目录排除
      const svgRule = config.module.rules.find(rule => rule.test.test('.svg'))
      svgRule.exclude = [resolve( 'assets/icons/svg')]
      //添加loader规则
      config.module.rules.push({
        test: /\.svg$/, //匹配.svg
        include: [resolve('assets/icons/svg')], //将存放svg的目录加入到loader处理目录
        use: [{ loader: 'svg-sprite-loader', options: { symbolId: 'icon-[name]' } }]
      })
    }
  }
###三、组件化

<template>
  <svg :class="svgClass" 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 lang="scss" scoped>
.svg-icon {
  width: 1em;
  height: 1em;
  vertical-align: -0.15em;
  fill:currentColor;
  overflow: hidden;
}
</style>

四、插件注册

// plugins/svgIcon.js
import Vue from 'vue'
import SvgIcon from '@/components/svgIcon'// Nuxt 默认@指向根目录 

// 注册组件
Vue.component('svg-icon', SvgIcon)
//预请求svg组件(通过之前的svg-sprite-loader加载)
const req = require.context('@/assets/icons/svg', false, /\.svg$/) 
req.keys().map(req);

五、配置文件挂载

// 配置文件挂载
plugins: [
    '@/plugins/svgIcon',
  ],

相关文章

  • nuxtjs使用SVG 图标

    一、安装依赖 二、修改规则和新增规则,nuxt.config.js 四、插件注册 五、配置文件挂载

  • AGS JS开发-以JSON参数构建地图渲染之四

    使用SVG图标符号 1.环境说明 ArcGIS 10.4.1 JS API 3.15 2.SVG图标介绍 SVG是...

  • 封装svg组件

    svg图标的使用基于这次项目的图标使用本地的svg图片。普通的使用方式 避免每次写这三行代码,封装一个svg组件 ...

  • 使用 iconfont 来引用 font class 图标

    之前项目中一直使用美工给的 svg 图标,但是有几个缺点: svg 图标无法很方便的定义颜色,大小。 svg 图标...

  • 开发技巧分享—给 FileMaker 装备 SVG 高清无码大图

    SVG 图标的优势 FileMaker 自 14 版开始支持 SVG 格式的图标。在之前的版本,只能使用 png ...

  • vue-cli3使用svg的最佳实践

    目录 iconfont的三种使用方式及其优缺点 封装svg组件 svg雪碧图 自动导入svg图标 封装svg组件 ...

  • vue 使用svg图标

    之前做项目中,使用的小图标都是使用字体图标,现在这个项目因为毕竟小,就想使用svg来展示svg。因为在学习的过程中...

  • Iconfont应用规范

    SVG图标绘制 一、图标绘制范围 绘制工具:AI、SKETCH 另外不建议使用PS,因为虽然PS也可以导出SVG,...

  • android apk瘦身

    apk打包流程图 1,SVG图片替换PNG图片 使用svg图注意事项: 1 svg图适用于小图标,svg宽高 小于...

  • 在Material UI中使用svg图标

    这篇文章就讲两个事儿: 如何在一个组件中使用svg图标。 如何将svg图标作为全局资源使用,而不仅限于一个或几个组...

网友评论

      本文标题:nuxtjs使用SVG 图标

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