4.0.7 • Published 1 year ago
@tomoeed/j-icon v4.0.7
j-icon
Vue 3.0 SVG图标组件
该组件仅渲染<svg>元素. 你必须通过icon prop 传入图标对象或在安装插件时传入需要使用的图标
使用 CLI 批量创建图标
安装
npm install @tomoeed/j-icon --save使用
通过插件安装
import {createApp} from 'vue';
import {plugin} from '@tomoeed/j-icon';
createApp({}).use(plugin, {name: 'j-icon', classes: [], prefix: true, icons: []});<template>
<j-icon icon=""/>
</template>直接使用组件
<template>
<j-icon icon="alert"/>
</template>
<script setup>
import JIcon from '@tomoeed/j-icon';
import {alert} from '< icon_file >';
</script>
// OR
<script>
import JIcon from '@tomoeed/j-icon';
import {alert} from '< icon_file >';
export default {
component: { JIcon },
setup() {
return { alert };
}
}
</script>插件可选的选项对象
name: 组件名称
app.use(JIcon, {name: 'v-icon'});
<v-icon icon=""/>icons: 所有图标对象. 安装插件时传入的图标在使用组件时可以直接使用该图标的名称
app.use(JIcon, {icons: {x:{}}});
app.use(JIcon, {icons: [{name: 'x'}]});
<j-icon icon="x"/>classes: 渲染<svg>元素时,默认添加的class
app.use(JIcon, {classes: ['icon']});
<svg class="icon">...</svg>prefix: 图标名称class前缀- 如果为
false, 则不会添加具有图标名称的class - 如果为
true, 则添加icon-前缀 - 如果是字符串, 将会与图标名称拼接
- 如果为
app.use(JIcon, {prefix: 'j-icon-'});
<j-icon icon="x"/>
<svg class="icon j-icon-x">...</svg>组件 props
icon: 需要渲染的图标的名称或该图标对象width: SVG 元素宽度height: SVG 元素高度tabindexSVG 元素是否可以聚焦title: 为 SVG 元素提供一个描述性字符串, 用来提升 SVG 文档的可访问性aria-label: HTML aria-label 属性desc: 为 SVG 元素提供一个长文本描述, 用来提升 SVG 文档的可访问性aria-description: HTML aria-description 属性
title 与 aria-label 属性不要同时使用, 若同时为这两个属性提供值, 则优先使用 title 属性.
desc 与 aria-description 属性同理
<j-icon icon="x" title="title" aria-label="aria-label"/>
<svg aria-labelledby="0123456789">
<title id="0123456789">title</title>
...
</svg>创建图标对象
图标对象属性查看 Icon
import {h as createElement} from 'vue';
const book = {
name: 'book',
viewBox: [0, 0, 16, 16],
size: [16, 16],
render: () => createElement('path', {d: ''})
};CLI
使用
j-icon --input <input-path> --output <dist>选项
- -i, --input 文件或文件夹路径, 支持输入多个路径
- -o, --output 文件输出目录
- -f, --format 输出文件格式, 支持格式: esm, umd, ts, type (默认值: esm type)
- -n, --name 输出文件名称 (默认值: index)