vue3项目中使用iconfont图标

vue3项目中使用iconfont图标

写前端项目时,经常要用到iconfont图标,我最原始的方法是吧iconfont图标下载为png/svg文件,然后在文件中作为资源引入,后来发现这么搞太不专业了

记录一下相对比较靠谱的使用方法

1.在iconfont中找到想要的图标

iconfont官网

image-20231205175717435

如,我想搜索一个map图标,可以按照下面的步骤来:

image-20231205175922011

  1. 搜索图标
  2. 加入购物车
  3. 点击上面的购物车图标
  4. 点击添加至项目
  5. 选择已经创建的项目,如果没有创建,就新建一个
  6. 点击确定,跳转到项目内容中

image-20231205180356844

  1. 选择三种引入方式中的symbol
  2. 如果是首次将购物车图标加入到项目中,需要点击标注8的地方,使在线链接处于打开状态
  3. 首次将图标加入项目,点击标注出来的9中的“点此复制代码”即可,如果更新了图标,要点击更新代码。弹出对话框,点确定就行了

image-20231205180632182

image-20231205180921734

  1. 随后出现一个代码链接, 如下,点开这个链接

image-20231205181031357

  1. 出现一串代码,如下:

image-20231205181107721

  1. 把代码复制下来

2.vue项目中引入代码并注册组件

  1. 在项目assets目录下创建iconfont文件夹,并在文件夹下创建iconfont.js文件,将上面的代码拷贝到iconfont.js文件中

image-20231205181333947

  1. 创建通用图标引用组件SvgIcon.vue,组件中填入以下代码,并根据自己的需求设置默认的参数
<template>
    <svg :class="svgClass" aria-hidden="true">
        <use :xlink:href="iconClassName" :fill="color" />
    </svg>
</template>
  
  
<script setup>
import { computed } from 'vue'
const props = defineProps({
    iconName: {
        type: String,
        required: true
    },
    className: {
        type: String,
        default: ''
    },
    color: {
        type: String,
        default: '#409eff'
    },
    size: {
        type: String,
        default: '16px'
    }
})
// 图标在 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 {
    /* v-bind 是 Vue3 才支持的功能,可以将 CSS 的值与 js 的值绑定 */
    width: v-bind('props.size');
    height: v-bind('props.size');
    position: relative;
    fill: currentColor;
    vertical-align: -2px;
}
</style>
  
  1. 全局注册SvgIcon.vue组件。目的是不需要在每个组件中都去引入这个组件,代码写在项目入口文件main.js中,如下:
import '@/assets/iconfont/iconfont.js'
import SvgIcon from '@/components/SvgIcon.vue'
...省略其他代码
app.component('SvgIcon', SvgIcon)

3.其他组件使用iconfont

<template>
    <div class="bread-crumb">
        <SvgIcon iconName="icon-location_1" style="margin-right: 5px;"></SvgIcon>
        <el-breadcrumb separator="/">
            <el-breadcrumb-item>{{ props.item.first }}</el-breadcrumb-item>
            <el-breadcrumb-item v-if="props.item.second">{{ props.item.second }}</el-breadcrumb-item>
        </el-breadcrumb>
    </div>
</template>

<script setup>
const props = defineProps(['item'])
</script>

<style lang="scss" scoped>
.bread-crumb {
    height: 50px;
    padding: 0 10px;
    display: flex;
    align-items: center;
    box-shadow: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px;
}

:deep(.el-breadcrumb__item) {
    height: 30px;
    font-size: 16px;
    line-height: 30px;
}

:deep(.el-breadcrumb__inner) {
    font-weight: bold;
}
</style>

其实就是一句代码

<SvgIcon iconName="icon-location_1" style="margin-right: 5px;"></SvgIcon>

代码中,需要给出iconName,这个值可以从iconfont页面的项目中获取,如下:

image-20231205182246879

在页面上的显示效果:

image-20231205182507989

4.修改iconfont样式

举个例子,hover的时候,想要改变图标的颜色,可以参考下面的代码

<template>
	<div class="icon-wrapper" @mouseenter="handleMouseenter" @mouseleave="handleMouseleave">
		<SvgIcon iconName="icon-star" :color="iconColor"></SvgIcon>
	</div>
</template>

<script setup>
const iconColor = ref('grey')
const handleMouseenter = () => {
    iconColor.value = 'blue'
}
const handleMouseleave = () => {
    iconColor.value = 'grey'
}  
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/220815.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Spring Boot】如何在IntelliJ IDEA中由同一份spring boot源码运行多个不同端口的实例

我们需要使用一个服务有多个实例的测试场景&#xff0c;那么我们就需要在IntelliJ IDEA中通过不同的端口运行不同的实例&#xff0c;并且运行时的源代码是一样的&#xff0c;那么我们可以在IntelliJ IDEA这样操作&#xff0c;接下来以UserApplication服务为例&#xff1a; 复制…

【MySQL】基本安装配置

1 基础知识 1.1 MySQL安装 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 1.1.1 安装过程 配置环境变量&#xff08;和配置Java8的环境变量如出一辙&#xff09;在MySQL解压文件夹下&#xff0c;导入my.ini文件&#xff0c;与bin目录同级&#xff0c;具体文…

Linux4.8、环境变量续

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言 如果对环境变量没有基本的理解&#xff0c;那么建议先看完这篇文章&#xff1a;环境变量https://blog.csdn.net/m0_74824254/article/details/134661113?spm1001.2014.3001.5501 环境变量与本地变量区别 使用export设…

二百一十一、Flume——Flume实时采集Linux中的Hive日志写入到HDFS中(亲测、附截图)

一、目的 为了实现用Flume实时采集Hive的操作日志到HDFS中&#xff0c;于是进行了一场实验 二、前期准备 &#xff08;一&#xff09;安装好Hadoop、Hive、Flume等工具 &#xff08;二&#xff09;查看Hive的日志在Linux系统中的文件路径 [roothurys23 conf]# find / -name…

PostGIS学习教程十:空间索引

PostGIS学习教程十&#xff1a;空间索引 回想一下&#xff0c;空间索引是空间数据库的三个关键特性之一。空间索引使得使用空间数据库存储大型数据集成为可能。在没有空间索引的情况下&#xff0c;对要素的任何搜索都需要对数据库中的每条记录进行"顺序扫描"。索引通…

AI生成视频-Pika

背景介绍 Pika 是一个使用 AI 生成和编辑视频的平台。它致力于通过 AI 技术使视频制作变得简单和无障碍。 Pika 1.0 是 Pika 的一个重大产品升级&#xff0c;包含了一个新的 AI 模型,可以在各种风格下生成和编辑视频,如 3D 动画&#xff0c;动漫&#xff0c;卡通和电影风格。…

HTTP会话技术---Cookie、Session和Token介绍及它们在JavaWeb中的使用

当涉及到Web应用程序的身份验证和状态管理时&#xff0c;我们通常会使用到Cookie、Session和Token这些会话技术。下面是对它们的介绍&#xff0c;并在JavaWeb中的示例 Cookie&#xff08;HTTP Cookie&#xff09; Cookie是一种存储在用户浏览器中的小型文本文件&#xff0c;由…

Elasticsearch:什么是情感分析?

情感分析的定义 情感分析应用自然语言处理&#xff08;NLP&#xff09;、计算语言学和机器学习来识别数字文本的情感基调。 这使得组织能够识别对其品牌、产品、服务或想法的积极、中立或消极情绪。 最终&#xff0c;它使企业能够更好地了解客户&#xff0c;从而为企业提供可行…

题目:区间更新(蓝桥OJ 3291)

题目描述&#xff1a; 解题思路&#xff1a; 差分模板题。 题解&#xff1a; #include<bits/stdc.h> using namespace std;const int N 1e5 10; int a[N], diff[N] ;//数组的大小不可能开到大于1e9int res(int n, int m) {for(int i 1; i < n; i)cin >&g…

Linux使用root用户安装完MySQL软件后,配置MySQL这个普通用户登录

在 Linux 系统中&#xff0c;当您使用 root 用户安装 MySQL 后&#xff0c;系统会自动创建一个名为 mysql 的系统用户。这个 mysql 用户主要用于管理 MySQL 服务的运行&#xff0c;通常是没有登录系统的权限的。如果您希望使这个 mysql 用户能够登录到系统&#xff0c;您需要设…

GPC-虚拟主平台(VPP)概述

VPP: Virtual Primary Platform 虚拟主平台 2021年12月&#xff0c;GP发布了VPP 2.0。 随着安全芯片生态系统的发展&#xff0c;集成已成为一个显著的趋势。为了支持这一点&#xff0c;GP已经定义了虚拟主平台&#xff08;VPP&#xff09; 规范集概述并标准化了新的SE形式因素…

解决HTTP错误500.19 - internal server error -内部服务器错误的终极指南

在开发和维护网络应用程序时&#xff0c;难免会遇到各种HTTP错误代码。其中&#xff0c;HTTP错误500.19 - 内部服务器错误可谓是最令人头痛的问题之一。当你的应用程序遇到这个错误时&#xff0c;它似乎就像一道墙壁&#xff0c;挡住了你前进的道路。但别担心&#xff0c;本篇技…

极兔快递查询,极兔快递单号查询,将其中的退回件筛选出来

批量查询极兔快递单号的物流信息&#xff0c;将其中的退回件筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 极兔快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主界面左上角的…

Python OS模块常用方法整理

os模块包含了普遍的操作系统和文件目录方法 引入类库 首先需要引入类库 import os 常用方法 OS模块方法 获取操作系统类型 nt->window:Microsoft Windows NT posix->Linux/Mac OS: Portable Operating System Interface of UNIX&#xff08;可移植操作系统接口&…

Unity中动态合批

文章目录 前言一、动态合批的规则1、材质相同是合批的前提&#xff0c;但是如果是材质实例的话&#xff0c;则一样无法合批。2、支持不同网格的合批3、动态合批需要网格支持的顶点条件二、我们导入一个模型并且制作一个Shader&#xff0c;来测试动态合批1、我们选择模型的 Mesh…

二叉树进阶经典笔试题_1

1. 二叉树创建字符串 题目链接&#xff1a;606. 根据二叉树创建字符串 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a;给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构…

C语言分支结构程序之if语句(1)

目录 if语句其一 奇数的判定 if语句其二 对奇数偶数的判断 if语句的结构图 专题 语法结构 结构图的阅读方法 结构图示例 相等运算符 关系运算符 嵌套的if语句 if语句其一 大家的一天都会怎么度过呢&#xff1f;我想应该不会是被设计好的程序那样循规蹈矩&#xff0c;我们…

字符集——带你了解UTF-8的前世今生

文章目录 字符集的来历汉字和字母的编码特点Unicode字符集字符集小结编码和解码开发约定 字符集的来历 计算机是美国人发明的&#xff0c;由于计算机能够处理的数据只能是0和1组成的二进制数据&#xff0c;为了让计算机能够处理字符&#xff0c;于是美国人就把他们会用到的每一…

关于 Kubernetes中Admission Controllers(准入控制器) 认知的一些笔记

写在前面 工作中遇到&#xff0c;简单整理记忆博文为官方文档整理涉及内置准入控制的分类理解理解不足小伙伴帮忙指正 人活着就是为了忍受摧残&#xff0c;一直到死&#xff0c;想明了这一点&#xff0c;一切事情都能泰然处之 —— 王小波《黄金时代》 为什么需要准入控制器 准…

【Qt开发流程】之对象模型2:属性系统

描述 Qt提供了一个复杂的属性系统&#xff0c;类似于一些编译器供应商提供的属性系统。然而&#xff0c;作为一个独立于编译器和平台的库&#xff0c;Qt不依赖于非标准的编译器特性&#xff0c;如__property或[property]。 Qt解决方案适用于Qt支持的所有平台上的任何标准c编译…