首页 > 其他分享 >封装前端svg组件

封装前端svg组件

时间:2023-06-16 11:25:06浏览次数:40  
标签:插件 封装 icons svg 组件 vite icon

前言:

SVG(Scalable Vector Graphics)是一种基于 XML 的矢量图形格式,它可以在网页上展示高质量的图像,并且可以无损缩放。在前端开发中,SVG 图片被广泛用于创建图标、图形和动画效果。此篇文章将讲述在前端vue项目中封装svg组件,使其svg简单使用。

1. 首先创建svg组件:示例代码

<template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="iconName" />
  </svg>
</template>

<script>
export default defineComponent({
  props: {
    iconClass: {
      type: String,
      required: true
    },
    className: {
      type: String,
      default: ''
    }
    // color: {
    //   type: String,
    //   default: '#889aa4',
    // },
  },
  setup(props) {
    return {
      iconName: computed(() => `#icon-${props.iconClass}`),
      svgClass: computed(() => {
        if (props.className) {
          return `svg-icon ${props.className}`
        }
        return 'svg-icon'
      })
    }
  }
})
</script>
<style scope lang="scss">
.sub-el-icon,
.nav-icon {
  display: inline-block;
  font-size: 15px;
  margin-right: 12px;
  position: relative;
}

.svg-icon {
  width: 1em;
  height: 1em;
  position: relative;
  fill: currentColor;
  vertical-align: -2px;
}
</style>

其中iconClass代表svg图片名称,需要用到的时候只需要将图片名称传入iconClass属性中即可。

2.此文档使用的是vue3.0+vite架构,所以这边需要下载vite-plugin-svg-icons插件

npm i vite-plugin-svg-icons

3.下载完成插件后需要在vite.config.js中进行配置

首先引入插件 import svgIcons from 'vite-plugin-svg-icons' 在配置项中代码

plugins: [
      svgIcons({
         iconDirs: [/* 指定SVG图标文件的目录 */]
       })
     ]

配置 SVG 图标文件路径:默认情况下,vite-plugin-svg-icons 会在 src/icons 目录下寻找 SVG 图标文件。如果你希望指定其他目录,可以在插件的选项中进行配置,配置完成后这个插件会自动生成一个svg组件,也可以自定义svg组件。

4.这边组件选择了挂载到全局,也可以单独引入使用,看个人喜好。

import svgIcon from '@/icons/SvgIcon.vue'
app.component('SvgIcon', svgIcon)

5. 使用

<svg-icon icon-class="tips-icon" class-name="nav-icon" />

作者:邵文俊

标签:插件,封装,icons,svg,组件,vite,icon
From: https://www.cnblogs.com/DTCLOUD/p/17485102.html

相关文章

  • 通过python封装接口获取淘宝商品页面数据、淘宝商品详情数据
    可以使用GET或POST方法,请求参数中应包含商品详情页面数据、标题、价格、图片、库存、销量等信息。解析返回的response中的HTML页面或JSON格式数据,提取需要的商品信息,如商品标题、价格、评价人数等。使用pandas库将提取的商品信息保存到数据框中,以方便后续处理和分析。......
  • 02项目数据库隐藏密码,封装logger,环境变量的设置,封装全局异常,Response,开启media访问,前
    1项目数据库之隐藏密码#我们直接把mysql的用户名和密码写死在了代码中----》后期可能会存在风险----》代码如果泄露----》mysql的用户密码泄露----》可以远程登录----》脱裤(拖库)----》所有数据会被黑客获取到----》卖钱#华住---》在代码中把数据库用户名和密码写死了----》......
  • cloudstack的重新封装--api调用
    使用python将cloudstack的多个功能进行重新封装形成api调用。#coding=utf-8#!/usr/bin/envpythonimportbase64importhmacimportjsonimportrequestsimportsysimporttimeimporturllibimportreimporthashlibimportloggingLOG=logging.getLogger(__name__......
  • vue封装公共组件库并发布到npm库
    利用的原理:vue框架提供的api:Vue.use(plugin),我们把封装好组件的项目打包成vue库,并提供install方法,然后发布到npm中。Vue.use(plugin)的时候会自动执行插件中的install方法。 一、组件库代码目录调整1.根目录创建packages文件夹2.在packages文件夹中新增components文......
  • Vue 中 组件通信 - 子传父(自定义事件)
    Vue中组件通信-子传父(自定义事件)Vue中组件通信-子传父(自定义事件)子传父步骤:在子组件的data里面定义好要传递的数据在子组件的模版里面正常使用该数据(一般是通过一定的动作,如点击,滑动等,来自定义事件向父组件传递,这里以click为例)在子组件的methods里面定义this.$......
  • MUR20100DCR-ASEMI贴片TO-263封装快恢复二极管MUR20100DCR
    编辑:llMUR20100DCR-ASEMI贴片TO-263封装快恢复二极管MUR20100DCR型号:MUR20100DCR品牌:ASEMI封装:TO-263正向电流:20A反向耐压:1000V浪涌电流:600A恢复时间:35ns工作温度:-50°C~150°C引脚数量:3类型:快恢复二极管特性:贴片二极管、快恢复二极管、共阳极二极管MUR20100DCR应用开关电源智能家......
  • React图片上传组件设计
    本文讨论React图片上传组件的正确设计思路。程序员对React图片上传组件主要有如下几点关心:界面方面:自动提供图片预览功能,能删除错传的图,传图数量限制等。编程方面:上传时机是否可以外部编程控制,如果是(1)即拍即传,则不能控制也无妨,如果是(2)批量上传,则外部需要有能力控制上传时机;每一张图......
  • MUR20100DC-ASEMI贴片TO-263封装快恢复二极管MUR20100DC
    编辑:llMUR20100DC-ASEMI贴片TO-263封装快恢复二极管MUR20100DC型号:MUR20100DC品牌:ASEMI封装:TO-263正向电流:20A反向电压:1000V引脚数量:3恢复时间:35ns正向压降:1.8V类型:快恢复二极管特性:超快恢复二极管、贴片二极管、共阴极二极管工作温度:-50°C~150°C封装尺寸:如图MUR2......
  • 界面控件DevExtreme UI组件——增强的自定义功能
    在本文中,我们将回顾DevExtremeUI组件在v22.2版本主要更新中一系列与自定义相关的增强。DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,到ASP.NETCore......
  • 前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall
    前端vue仿京东天猫简单好用的瀑布流瀑布流式布局列表组件waterfall,下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=13046效果图如下:使用方法<!--proList:条目数组数据goProDetail:条目点击事件跳转(实现了点击条目数据传值)--><ccWaterLis......