Vue3巧用iconfont字体图标库(建议收藏)

大家好,我是勇宝,后台有友友私信我,网站什么时候上线,还在建设中,哈哈。稍安勿躁

今天来给大家讲讲图标,在我们的网站中开发过程中,一些导航栏的部分加上图标会使我们的网站更加的美观。借着这个机会跟大家唠一唠Vue3中怎么有好的使用字体图标。

一、iconfont字体图标库

首先推荐一款我自己项目中使用到的矢量图标库 iconfont,当前使用iconfont方式有很多吗,本章节我只将我在Vue项目中常用到的一种方式,也是比较推荐的一种。

1、挑选图标

首先打开网站,搜索我们需要用到的图标,比如我搜索收藏,如下:

2、加入购物车

选择好我们要在项目使用到的图标。

3、加入项目

把我们选择好的图标添加到我们创建项目中,这个鼠标不好使,大家将就一下把

4、复制Symbol代码

有三种导入方式,这里我使用Symbol的方式导入到我们的vue项目。点击点此复制代码下的代码会弹出一个网页,我们需要复制其中的代码。

到此为止,我们选择图标的部分就算是结束啦,是不是很简单,下边我们开始导入到我们的Vue项目中。

二、iconfont导入Vue

因为我们是做项目,需要简化我们的操作,也是为了后期维护成本,所以本小结会封装一个公共的Svg组件,方便我们去使用图标。也正好借此机会学习一下组件的简单封装

1、导入Symbol代码

拷贝项目下面生成的symbol代码,就是刚才我们复制的跟乱码一下的东西,哈哈。 我这里是放在了src/assets/iconfont/index.js中啦。

js 复制代码
//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js

2、SvgIcon组件封装

我们在Vuesrc/components/SvgIcon目录下创建index.vue来封装我们的组件。我们来简单写一写,官网也给出相关文档,供大家参考。

我们的组件有以下特点

  • 能够自定义css样式
  • 接收传递的图标名
js 复制代码
<template>
    <svg :class="svgClass" aria-hidden="true">
        <use :xlink:href="iconClassName"></use>
    </svg>
</template>

<script setup>
import { computed, defineProps } from 'vue'

const props = defineProps({
    // 添加自定义类名
    className: {
        type: String,
        default: ''
    },
    // iconfont中的名字
    iconName: {
        type: String,
        required: true
    }
})

const svgClass = computed(() => {
    if (props.className) {
        return `svg-icon ${ props.className }`
    } else {
        return 'svg-icon'
    }
})
const iconClassName = computed(() => `#${ props.iconName }`)
</script>

<style lang="scss" scoped>
.svg-icon {
    width: 2em;
    height: 2em;
    vertical-align: -0.15em;
    fill: currentColor;
    overflow: hidden;
}
</style>

3. 注册SvgIcon组件

首先我们需要在main.js中导入上面复制symbol代码,然后在注册我们的组件

js 复制代码
import App from './App.vue'
// 1. 导入[js/ts]文件
import '@/assets/iconfont'

const app = createApp(App)

// 2. 注册SvgIcon
app.component('svg-icon', SvgIcon)
......

注:这里是演示,正常情况不应该这样注册组件,我们应该写一个单独的plugins/index.js(我喜欢起这个名字)文件。

4. 组件的使用

接下来就可以在我们自己vue文件中进行使用啦!

js 复制代码
<template>
    <div class="pc">
        <svg-icon iconName="icon-huidaodingbu"></svg-icon>
    </div>
</template>

效果如下:

三、总结

好啦!今天的讲解就到此为止了,相信看完你也学会了,赶紧动手去试一试吧。iconfont中的图标还是相当多的,基本能满足大部分小伙伴的需求。也欢迎大家评论区推荐更好用的图标库。

写完想起来,以后要不要出一些封装组件的文章,哈哈哈。

我是前端小学生勇宝,感谢支持关注

相关推荐
琉璃℡初雪9 分钟前
vue2/3 中使用 @vue-office/docx 在网页中预览(docx、excel、pdf)文件
vue.js·pdf·excel
Bl_a_ck10 分钟前
【React】Craco 简介
开发语言·前端·react.js·typescript·前端框架
为美好的生活献上中指36 分钟前
java每日精进 5.11【WebSocket】
java·javascript·css·网络·sql·websocket·网络协议
augenstern4161 小时前
webpack重构优化
前端·webpack·重构
海拥✘1 小时前
CodeBuddy终极测评:中国版Cursor的开发革命(含安装指南+HTML游戏实战)
前端·游戏·html
寧笙(Lycode)2 小时前
React系列——HOC高阶组件的封装与使用
前端·react.js·前端框架
asqq82 小时前
CSS 中的 ::before 和 ::after 伪元素
前端·css
拖孩2 小时前
【Nova UI】十五、打造组件库之滚动条组件(上):滚动条组件的起步与进阶
前端·javascript·css·vue.js·ui组件库
苹果电脑的鑫鑫2 小时前
element中表格文字剧中可以使用的属性
javascript·vue.js·elementui
Hejjon2 小时前
Vue2 elementUI 二次封装命令式表单弹框组件
前端·vue.js