首页 > 其他分享 >vite vue3 使用iconfont svg形式

vite vue3 使用iconfont svg形式

时间:2022-12-15 18:23:19浏览次数:58  
标签:vue const svg vue3 iconfont props icon

1.登录https://www.iconfont.cn/ 官网,把自己喜欢得图标添加到项目中
2.按照标红的顺序选择把文件下载下来,下来以后解压缩把iconfont.js 放到项目中image
3.写一个全局svgIcon.vue组件

<template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="iconClassName" :fill="props.color" />
  </svg>
</template>

<script setup lang="ts">
import { computed } from "vue";

const props = defineProps({
  iconName: {
    type: String,
    required: true
  },
  className: {
    type: String,
    default: ""
  },
  //自定义颜色
  color: {
    type: String,
    default: "#ffffff"
  }
});

// 图标在 iconfont 中的名字

const iconClassName = computed(() => {
  return `#${props.iconName}`;
});

// 给图标添加上类名

const svgClass = computed(() => {
  if (props.className) {
    return `svg-icon ${props.className}`;
  }

  return "svg-icon";
});
</script>

<style scoped>
.svg-icon {
  width: 16px;
  height: 16px;
  position: relative;
  margin-right: 5px;
}
</style>

4.在 main.ts 中全局注册

// 引入阿里云字体js
import './assets/styles/icon/iconfont.js';
import SvgIcon from '@/components/svgIcon.vue'
const app = createApp(App)
app.component('SvgIcon',SvgIcon)

5.在具体业务中使用,例如菜单组件中使用如下

    <el-sub-menu
      :index="route.path"
      :key="route.name"
      :title="route.meta?.title || '未命名'"
    >
      <template #title>
        <svg-icon :iconName="route.meta.icon" />
        <span class="nav-text">{{ route.meta?.title }}</span>
      </template>
      <template v-for="children of route.children">
        <!-- 递归 -->
        <menuItem :route="children" />
      </template>
    </el-sub-menu>

标签:vue,const,svg,vue3,iconfont,props,icon
From: https://www.cnblogs.com/sweetpitaya/p/16985772.html

相关文章

  • vue3.0--<script setup>的使用
    1.<scriptsetup>的定义<scriptsetup> 是在单文件组件(SFC)中使用组合式API的编译时语法糖。当同时使用SFC与组合式API时该语法是默认推荐。相比于普通的 <scr......
  • Vue3
    【Vue】带你快速上手Vue3-使用-CompositionAPI-响应式原理-新特性本文是根据B站尚硅谷的视频《尚硅谷Vue2.0+Vue3.0全套教程,全网最新最强vuejs从入门到精通》V......
  • uniapp vue3下的代理转发不生效问题,亲测有效解决
    以前配置过vuevite的代理转发,没想到在uniapp的代理转发下翻车了,其实是一个很小的问题。调试过程中,尝试了webpack、vite等写法在根目录下创建了vite.config.jsvue.co......
  • vue3.0--setup()
    1.setup()定义:setup()是vue3新增加的组件。vue3采用了组合式 API ,为了使用组合式API,我们需要一个入口,在vue3组件中,称之为setup。(简单点来说,就是vue2里面的data,me......
  • vue3.2+ts实现在方法中可调用的拟态框弹窗(类el-MessageBox)
    公司UI设计的拟态框弹窗跟ElementPlusUI的布局不太一致。导致不能够直接修改样式得到想到样式。直接上图。这个需求最主要的是要通过方法去调用。为了像el-messagebox......
  • 实现一个可拖拽的div(vue3写法)
    constchatbox=ref();constdragx=(el)=>{letoDiv=chatbox.value;//当前元素letdisX=el.clientX-oDiv.offsetLeft;letdisY=el.clientY-oDi......
  • vue3组件el-dialog提取
    父组件:1<template>2<divclass="auto-wrap">3<divclass="content-left">45<el-form:model="addReportForm"label-width="120px">......
  • Vue3.0文档学习心得--依赖注入
    1.provide():在祖先组件或整个应用(通过 app.provide()) 提供一个值,可以被后代组件注入。(1)第一个参数是要注入的key,可以是一个字符串或者一个symbol,第二个参数是要......
  • vue3 Element Plus 之 Message 消息提示 提示框 宽度 不对 横排不居中
    官网地址>>引入后样式不对截图:在App.vue贴上代码如下:附上代码:.el-message__content{width:auto;height:auto;background:none;}达到期望结果截图......
  • 【问题】前端 VUE3 Invalid Host header
    项目全局搜索 devServer在devServer里面添加"disableHostCheck":true ......