【Vue3】Vue3+Vite前端在组件中直接使用svg图标icon(实现设计稿的icon解决方案)

2 篇文章 0 订阅

webpack实现

下载icon图标(svg格式)

用到的是腾讯codesign,其他平台也能进行svg图片的下载
在这里插入图片描述

放入项目

在这里插入图片描述

svg中如何控制图标颜色

如下图控制svg颜色的是fill参数,此处可以删除掉,保证添加后和同级文字样式统一

在这里插入图片描述

引入插件

vite.config.ts中引入插件vite-plugin-svg-icons

官方文档:https://github.com/vbenjs/vite-plugin-svg-icons/tree/main#readme

plugins中使用
此处需要在plugins中,匹配到svg的目录
在这里插入图片描述

引入svg组件

svg组件

<template>
  <svg aria-hidden="true" :class="`iconfont ${className}`" :style="`width:${width};height:${height};color:${color};${style}`">
    <use :xlink:href="symbolId" />
  </svg>
</template>
<script lang="ts">
import { computed, defineComponent } from "vue";

/**
 * 自定义svg图标,可自行将svg图标下载后存放在/src/assets/icons/svg目录下
 * `使用方法:<svg-icon name="earth" color="red"></svg-icon>`
 */
export default defineComponent({
  name: "SvgIcon",
  props: {
    prefix: {
      type: String,
      default: "icon"
    },
    name: {
      type: String,
      required: true
    },
    color: {
      type: String,
      default: ""
    },
    width: String,
    height: String,
    className: { type: String, default: "" },
    style: { type: String, default: "" }
  },
  setup(props) {
    const symbolId = computed(() => `#${props.prefix}-${props.name.replace("icon-", "")}`);
    return { symbolId };
  }
});
</script>

svg组件使用

  /**
 * 自定义svg图标,可自行将svg图标下载后存放在/src/assets/icons/svg目录下
 * `使用方法:<svg-icon name="earth" color="red"></svg-icon>`
 */
<template>
  <div class="hidden-xs-only">
    <svg-icon :name="state.collapseSidebar ? 'indent' : 'outdent'" />
  </div>
  <div class="hidden-sm-and-up show-xs-only">
    <svg-icon name="icon-indent" />
  </div>
</template>
<script>
  import SvgIcon from '@/components/base/svg-icon'
  export default defineComponent({
    components: {
      SvgIcon
    },
    setup(){
    }
    )}
</script>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值