vue3 组件篇 Icon

文章目录

组件介绍

Icon(图标)组件是一种常见的用户界面元素,用于在网页、移动应用和桌面应用中显示图标。这些图标通常用来传达信息、进行导航、增强用户界面或提供视觉元素。

如何在项目中搭建iconfont字体图标库

很久以前介绍过一种阿里字体图标库的使用 https://blog.csdn.net/glorydx/article/details/108262413

今天介绍另外一个工具icomoon,来自由地创建字体图标库,你可以添加,删除,或者在现有的库里寻找你想要的字体图标。

快速创建一套iconfont

进入 icomoon(官网:https://icomoon.io/),在网页右上角找到 IcnMoon App 按钮,点击进入。

点击 icon libray,进入官网提供的一些现成的组件库,还是很齐全和多样的

随便选一个点击Add,当然我已经选好了一个

返回之前的页面,点击select all 全选

点击底部的generate font 生成iconfont的一些相关文件

进入新页面后,点击download下载这些iconfont的文件压缩包

解压后,将里面有用的文件提出来

可以将fonts文件夹和style.css直接放入项目的跟目录中,这样再引入style.css,项目就可以直接使用这些iconfont了。

如果想要使用scss文件,需要将style.css适当改造,以下代码,只展示两个文件改造的部分,其实就是改了一下引入的方式。

style.css

css 复制代码
@font-face {
  font-family: 'icomoon';
  src:  url('icomoon.eot?yt36bb');
  src:  url('icomoon.eot?yt36bb#iefix') format('embedded-opentype'),
    url('icomoon.ttf?yt36bb') format('truetype'),
    url('icomoon.woff?yt36bb') format('woff'),
    url('icomoon.svg?yt36bb#icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: block;
}

style.scss

javascript 复制代码
@font-face {
  font-family: 'icomoon';
  src:  url('~@/fonts/icomoon.eot?yt36bb');
  src:  url('~@/fonts/icomoon.eot?yt36bb#iefix') format('embedded-opentype'),
    url('~@/fonts/icomoon.ttf?yt36bb') format('truetype'),
    url('~@/fonts/icomoon.woff?yt36bb') format('woff'),
    url('~@/fonts/icomoon.svg?yt36bb#icomoon') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: block;
}

这样在项目中引入style.scss也能正常使用iconfont了(前提是项目依赖支持使用scss)

修改 或 新增iconfont

进入icomoon的网站 https://icomoon.io/app/#/select,点击import icons

将之前保存下来的selection.json文件导入其中,这样就得到了目前项目中已经有的iconfont

再点击import icons,导入新icon的svg文件,然后选中它

剩下的就是重复之前的一些步骤 generate font,然后download,将需要的文件保存下来,替换掉原来的文件即可。

组件安装与使用

需要先安装vue3-dxui

javascript 复制代码
yarn add vue3-dxui

或者

javascript 复制代码
npm install vue3-dxui

全局main.ts中引入css

javascript 复制代码
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import 'vue3-dxui/dxui/dxui.css'

createApp(App).use(store).use(router).mount('#app')

按需引入

javascript 复制代码
<script>
import { Icon } from 'vue3-dxui'

export default {
  components: {
  	Icon
  }
}
</script>

组件代码

javascript 复制代码
<template>
  <span class="dx-icon icomoon" :class="className" :style="style"></span>
</template>

<script lang="ts">
import { ref, SetupContext, PropType, CSSProperties } from 'vue'

import { Data } from './types/index'

export default {
  name: 'Icon',
  props: {
    // 通过传递类名,来自定义样式
    iconName: {
      require: false,
      default: 'anquan',
      type: String
    },
    // 自定义样式
    style: Object as PropType<CSSProperties>
  },
  setup(props: Data, context: SetupContext) {
    // const currentInstance: ComponentInternalInstance | null = getCurrentInstance()
    const className = ref(`icon-${props.iconName}`)

    return {
      className
    }
  }
}
</script>

<style lang="scss">
@import '@/scss/layout.scss';
@import '@/fonts/icomoon.scss';
</style>

参数说明

名称 说明
iconName 预备了一些icon,可以通过传入字符串进行自由选择
style 自定义一些样式,一般是控制icon的大小和颜色

关于dxui组件库

dxui组件库是我个人搭建的vue3 前端交互组件库,倾向于pc网站的交互模式。

  1. 如果你有任何问题,请在博客下方评论留言,我尽可能24小时内回复。
  2. dxui新上线的官网域名变更 http://dxui.cn
  3. npm 官方链接 https://www.npmjs.com/package/vue3-dxui
  4. 如果你想看完整源码 https://github.com/757363985/dxui
相关推荐
SL-staff2 天前
Vue3私有化AI白板落地实战|解决政企项目智能绘图合规难题(可直接复用源码)
人工智能·低代码·开源·vue3·白板·jvs规则引擎·jvs-draw
雨季mo浅忆2 天前
Cursor快速实现上传Excel功能
前端·vue3·ai编程
ANnianStriver4 天前
PetLumina-AI 驱动的宠物生活管理平台
java·生活·vue3·springboot·ai编程·宠物·全栈开发
雨季mo浅忆5 天前
记录Vue3项目中的各类问题
前端·bug·vue3
八目蛛8 天前
八目蛛网络(免费工具网站导航)
css·vue.js·开源·vue3·html5·ai编程
颂love8 天前
Vue3基础入门
前端·学习·vue3
海市公约9 天前
Vue3组合式API中watch传值生命周期与自定义Hook实战
vue3·生命周期·watch·props·组件通信·defineexpose·自定义hook
海市公约10 天前
Vue3组合式API与响应式系统核心机制详解
vue3·computed·reactive·ref·响应式系统·composition api·script setup
小茴香35311 天前
Vue3路由权限动态管理
前端·前端框架·vue3
暗冰ཏོ15 天前
《2026 Vue2 + Vue3 完整学习指南:基础语法、路由缓存、登录拦截、项目实战与面试题》
前端·vue.js·vue·vue3·vue2