如何管理系统中使用的图标
关于图标的方案,现阶段也就三种:
- 雪碧图
- 字符图标
- svg
雪碧图
雪碧图就是将多个图标图片合并到一张图里面,前端通过控制图片的大小位置来进行显示。但是也有缺陷,就是图片的清晰度了,如果放大了,就会显的很模糊。
字符图标
字符图标是目前最成熟的一种方案,使用简单,并且是和字体一样的,放大依旧很清晰。但是他的缺点就是不支持多色图标,也就是一个字符图标,他无法同时显示多种颜色。
svg
svg是最近开始兴起的,它是一种组件化封装的方式,将svg代码化,以达到控制的目的,而且相对于字符字体,svg本身有很多优势,比如动画,多色等等
因为组件化了,所以我们可以按需引入,虽然字符图标也可以,但是那种是需要平台的支持,如果对方只提供了一个包括很多图标的字体文件,即便你使用的是其中几个,你也必须要全部下载完毕才能使用。
图标平台
首推的就是阿里的ICONfont了
如果你已经用过了,应该已经明白了,这个网站是多么的好用了。
网站提供了三种使用图标的方式:
- Unicode
- font class
- Symbol
前两种都是字体的方式,其中常用的就是font class了
symbol是svg的方式,当我们查看在线链接的时候,生成的是一个js文件。里面存储着我们所需要使用的图标。
使用svg
Ant Design of Vue
在Ant Design of Vue平台上,是支持对接阿里的svg图标的。
打开main.js文件
const IconFont = Icon.createFromIconfontCN({
scriptUrl: '//at.alicdn.com/t/font_8d5l8fzk5b87iudi.js',
});
Vue.component("IconFont",IconFont);
scriptUrl的参数为阿里图标生成的在线链接
然后我们把这个注册为全局的组件
使用时:
<template>
<IconFont type="icon-xxx" />
</template>
type的值为图标的名称,然后我们可以像设置字体大小一样设置图标的大小。
单个svg文件
如果没有平台的支持,可能是单个的svg文件,我们就不能像上面那样使用了。
我们可以将这个svg文件引入,然后在data中挂载,然后绑定到img的src属性上,也是可以使用的。
如果你不想通过img元素来显示svg,那么就是组件化svg了。
我们需要使用到一个vue-cli的配置和插件:vue-svg-loader
先进行安装:
yarn add vue-svg-loader
安装完毕我们还需要配置一些解析器
打开vue.config.js
module.exports = {
chainWebpack: config => {
const svgRule = config.module.rule('svg')
// 清除已有的所有 loader。
// 如果你不这样做,接下来的 loader 会附加在该规则现有的 loader 之后。
svgRule.uses.clear()
// 添加要替换的 loader
svgRule
.use('vue-svg-loader')
.loader('vue-svg-loader')
}
}
配置完记得重启项目。
配置完毕后,我们import引入的svg文件会被解析为一个组件。
<template>
<Logo />
</template>
<script>
import Logo from "../logo.svg";
export default {
components:{
Logo
}
}
</script>
我们可以像组件一样使用它,最终的他渲染的结果是一个svg元素。这个Logo组件其实是一个函数式组件。
以上就是关于图标的一些学习分享。
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿站点。未经许可,禁止转载。
暂无评论数据