美文网首页
无星的前端之旅(十二)——扩充elementUI的icon(少写

无星的前端之旅(十二)——扩充elementUI的icon(少写

作者: 无星灬 | 来源:发表于2020-11-26 17:19 被阅读0次

在 Vue 中引入 ElementUI 是非常常见的

elementUI-icon 图标

ElementUI 默认提供了一个 icon 图标集合,可以使用 i 标签展示

直接 class 名写图标名就能展示,这可太方便了

<i class="图标名"/>

但是图标肯定是不够用的,总会要引入一些自己的图标,比如使用阿里的iconfont

iconfont 引入

在阿里帮助页面我们可以看到好几种引入方式

其中 font-class 方式引入

fontclass引入

可以看到,需要先写个 fontclass

.iconfont{
    font-family:"iconfont" !important;
    font-size:16px;font-style:normal;
    -webkit-font-smoothing: antialiased;
    -webkit-text-stroke-width: 0.2px;
    -moz-osx-font-smoothing: grayscale;
}

然后每次引用都需要写 fontclass icon 名称

<i class="iconfont icon-xxx"/>

虽然不是什么繁琐的事,但写多了还是很烦的...

那怎么才能做到和 element-icon 一样,只需要写 icon 名呢

element 的 icon 是怎么做到只要一个 icon 的 class 名的

i标签

图中揭晓了秘密,css 选择器

[class*="el-icon-"], [class^="el-icon-"]{
  xxxx
}

通过 css 选择器,使得只要 el-icon-开头/包含 el-icon-的 class 名,都会作用这块 css

如法炮制

1.iconfont 平台支持项目前缀

image image

可以看到,项目-更多操作-编辑-前缀

这里支持写前缀,例如 wx-icon-

2.修改引入的 css

[class*="wx-icon-"], [class^="wx-icon-"]{
    font-family:"iconfont" !important;
    font-size:16px;font-style:normal;
    -webkit-font-smoothing: antialiased;
    -webkit-text-stroke-width: 0.2px;
    -moz-osx-font-smoothing: grayscale;
}

3.main.js 引入

import '@/styles/iconfont.css';

当然

你要是有 less 或者 scss 之类预编译框架也可以去 vue.config.js 里面配全局引入

反正引入就行了

4.使用

<i class="wx-icon-xxx" />

这下舒服了

相关文章

网友评论

      本文标题:无星的前端之旅(十二)——扩充elementUI的icon(少写

      本文链接:https://www.haomeiwen.com/subject/melziktx.html