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
相关推荐
RuoyiOffice20 小时前
SpringBoot3+Vue3 企业 AI 工作流:Tinyflow 画布、LLM 节点与在线试跑怎么落地
spring boot·大模型·vue3·agent·ai工作流·ruoyi office·tinyflow
RuoyiOffice1 天前
Springboot + Vue3 + FormCreate表单引擎,直接用AI对话进行单据设计,告别拖拽画表单
spring boot·低代码·vue3·sse·formcreate·ruoyi office·ai表单
RuoyiOffice4 天前
SpringBoot+Vue3+Onlyoffice 企业文件生命周期:上传、业务关联、权限、版本与安全清理
spring boot·vue3·文件管理·对象存储·权限控制·ruoyi office·附件管理
格数致用7 天前
03- Luckysheet与Vue3+Electron集成实战指南
electron·vue3·luckysheet
陪我一起学编程13 天前
vue3笔记
前端·webpack·vue3·vite·脚手架·vue3笔记·组件式
Json____16 天前
家居装修 AI 智能咨询助手:让装修咨询从“大海捞针“变成“一问即答“
java·后端·vue3·it学习·wwwoop.com
liangshanbo121516 天前
面试题:什么是 Reflect?它解决了什么问题?
vue3·reflect
RuoyiOffice17 天前
SpringBoot3+Vue3 低代码业务表单:从拖拽设计、独立建表到审批与数据查询
spring boot·vue3·数据建模·flowable·版本管理·低代码表单·ruoyi office
RuoyiOffice17 天前
SpringBoot3 企业薪酬核算:考勤、绩效与薪资规则如何算出一张可解释的工资单
spring boot·vue3·规则引擎·hrm·ruoyi office·薪酬核算·薪资试算
RuoyiOffice23 天前
2026最推荐基于SpringBoot+Vue3的项目管理经营一体化:从商机、合同、任务与工时走到回款和利润
spring boot·项目管理·vue3·crm·合同管理·ruoyi office·项目经营