一.问题
项目开发中,有时候会发现使用饿了么ui框架,图标会显示乱码,有时候又是正常显示的。通过控制台查看发现图标的content显示异常。
二.原因
通过查找发现以前element-ui编译sass使用的是node-sass这个工具(下载慢、node版本不兼容等问题)。而现在用的是dart-sass这个工具。 而dart-sass在编译element-ui里icon伪元素的content 编码时会转换成对应unicode明文,所以通过伪元素来展示的图标如.el-icon-tickets:before{content:"\e78b"}
,编译之后就变成了.el-icon-tickets:before{content:""}
,“”便是一个双字节字符,导致出现乱码。
> "".charCodeAt(0).toString(16)
> e78b
三.解决方法
1. 不使用自定义主题
2.使用css-unicode-loader
3.将sass版本升高到1.39.0
4.将sacc更换为node-sass编译(不推荐)