unibest/docs/other/iconfont/iconfont.md

109 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## iconfont 图标库
`iconfont` 同样有海量免费的图标,同时支持上传自己的图标。公司项目通常会有自己的图标,由专业的 `UI设计师` 设计,这时通常会使用 `iconfont` 方式使用图标。
- 1. 打开`阿里巴巴矢量图标库 iconfont`地址https://www.iconfont.cn/,并登录。
- 2. 寻找需要的图标,加入项目,也可以上传自己的图标。
![alt text](./assets/5-9.png)
![alt text](./assets/5-10.png)
![alt text](./assets/5-11.png)
> 初次接触 `iconfont` 的同学,可能会找不到自己的项目,如下图:资源管理 -- 我的项目
![alt text](./assets/5-12.png)
- 3.图标方式选择,如下图有 `Unicode` `Font class` `Symbol` 三种方式,分别预览和使用如下:
![alt text](./assets/5-13.png)
![alt text](./assets/5-14.png)
![alt text](./assets/5-15.png)
- `Unicode` 的方式太落后,语义化不明显,不推荐;
- `Symbol` 的方式太先进(背后原理是生成了 `SVG` 雪碧图),先进到 `小程序``APP` 都不支持,只能无奈放弃。
> `Symbol` 的方式生成 `svg` 雪碧图,如下所示:
>
> ![alt text](./assets/5-16.png)
- `Font class` 则是我们最合适的选择,有 `Symbol` 一样的语义化(都是`icon-xxx`方式),引入和使用也方便( `Symbol` 是一个 `js` 文件,`Font class` 是一个 `css` 文件)。
- 3. 点击选中 `Font class` 后再点击 `查看在线连接` 按钮,可以拿到一个 `css` 的链接,如 [//at.alicdn.com/t/c/font_4032028_mbcuy517h6.css](//at.alicdn.com/t/c/font_4032028_mbcuy517h6.css) ,如果期间新加入了图标,记得点击更新链接,会重新生成一个链接,只有最后面一串 hash 有改变,并且旧的链接依然可以访问。
![alt text](./assets/5-17.png)
我们使用的是 `Font class` 的方式,只需要这一个 `css` 链接就行,无需 `下载至本地`,想要本地预览的话才需要 `下载至本地`
> `iconfont` 有默认的前缀 `icon-`,可以设置为其他的,如我的一个项目设置为 `bap-icon-`,以防跟其他的冲突。
![alt text](./assets/5-18.png)
> 注意 `uniapp` 项目拿到 `css` 链接放到 `index.html` 是不对的,这样做只在 `h5` 中生效,`小程序` 和 `APP` 都不生效,正确的做法是放到代码里面显示引入。下面会讲:
- 4.在 `style/index.scss` 中写上上面的 `css` 链接里面的内容(`style/index.scss` 已经在 `main.ts` 引入了,`unibest` 模板已经内置),如下
> 注意: `url(//at.alicdn.com)` 里面的路径要改为 `url(https://at.alicdn.com)`,因为 APP 里面 `//` 是文件协议。 —— 设定 `https` 协议
```css
@font-face {
font-family: iconfont; /* Project id 4032028 */
src:
url('//at.alicdn.com/t/c/font_4032028_mbcuy517h6.woff2?t=1713685013355') format('woff2'),
url('//at.alicdn.com/t/c/font_4032028_mbcuy517h6.woff?t=1713685013355') format('woff'),
url('//at.alicdn.com/t/c/font_4032028_mbcuy517h6.ttf?t=1713685013355') format('truetype');
}
.iconfont {
font-family: iconfont !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-facebook::before {
content: '\e87d';
}
.icon-twitter::before {
content: '\e646';
}
.icon-telegram::before {
content: '\f245';
}
```
- 5. 编写代码,`<i class="iconfont icon-facebook"></i>`
![alt text](./assets/5-23.png)
- 6. 预览,`h5 `端正常APP 端不正常,小程序端看着正常,控制台也会报错,如下图:
![alt text](./assets/5-22.png)
- 7. 这个怎么处理呢?转成 `base64` 是最快捷的,`iconfont` 本身就支持, `3`步搞定:
- 7.1 如下图,勾选 `Base64`
![alt text](./assets/5-21.png)
- 7.2 生成新链接,并得到新的 `css` 代码
![alt text](./assets/5-20.png)
- 7.3 引入新代码刷新界面小程序不报错了APP 也正常了!
![alt text](./assets/5-19.png)
<!-- ### 批量去色
经我检测,不需要去色也支持动态改变颜色。可能去色是针对多色图标吧。
![alt text](./assets/5-100.png)
批量去色后要重新生成链接。 -->