【工程化】icon图标的获取

文章目录

前言

icon图标的使用来源个人目前只知道雪碧图,实体字符和SVG。

雪碧图虽然能节约请求的资源,但缺少可变化性(例如缩放模糊,颜色固定等),而且开发人员每次都需要通过定位获取相应的icon,极不方便。

实体字符(iconfont)格式是SVG,使用方法和字体一样,但是只能是单色的。

最好的SVG图标,没啥缺点,现在有些第三方组件库都迁移到SVG。

个人之前使用过国外的iconmoon,觉得不好用,不推荐使用,所以使用方法放到最后记录。

推荐使用阿里的iconfont,图标多,下载方便,还能转成SVG。

iconfont

具体怎么使用这个网站就不记录了,总之生成一个项目的时候,选择symbol。

然后有三种使用方法。

第一种

在线引入地址到前端工程中,如果公司有ui提供,也可以上传到iconfont上。这个方案的缺点就是如果在线修改图标,地址也要重新生成。

先main.js中注册

const IconFont = Icon.createFromIconfontCN({
  scriptUrl: "//at.alicdn.com/t/font_1154049_w87h4oeytph.js" // 在 iconfont.cn 上生成
});

Vue.component("IconFont", IconFont);

在html中直接这样使用,type里是这个图标的名字。

<IconFont type="icon-icon-404" style="font-size: 100px" />

第二种

本地文件引入,这种方式cli会自动生成一个url地址,缺点就是不方便。

<img :src="Logo" alt="">

import Logo from "@/assets/logo.svg";
export default {
  components: {
    Logo
  }
};

第三种

修改cli的webpack的loader图标配置,把图标改写成函数式组件,具体配置在cli官网可找。

在vue.config.js中

chainWebpack: config => {
  const svgRule = config.module.rule("svg");

  // 清除已有的所有 loader。
  // 如果你不这样做,接下来的 loader 会附加在该规则现有的 loader 之后。
  svgRule.uses.clear();

  // 添加要替换的 loader
  svgRule.use("vue-svg-loader").loader("vue-svg-loader");
}

把loader规则用npm下载vue-svg-loader,然后这样使用

<Logo />

import Logo from "@/assets/logo.svg";
export default {
  components: {
    Logo
  }
};

如果想看这个工程里所有loader规则有哪些,就在终端中输入:

Vue inspect > output.js

然后就会生成一个output.js配置文件


iconmoon

具体怎么使用这个网站不记录了,自定义后打包下载,打开文件
【工程化】icon图标的获取
将这个selection.json文件上传至网站即可知道用了什么图标;

然后把整个文件放入vue工程中的src/assets里面
【工程化】icon图标的获取
使用
【工程化】icon图标的获取

又水了一篇~

上一篇:专为Mac用户设计的创建图形模式软件:Patternodes 2.4.4


下一篇:Android动画之帧动画