vue工程element自定义主题色,图标偶现乱码解决办法

2022-08-31 13:53

官方方式修改主题色

在项目中改变 SCSS 变量
Element 的 theme-chalk 使用 SCSS 编写,如果你的项目也使用了 SCSS,那么可以直接在项目中改变 Element 的样式变量。新建一个样式文件,例如 element-variables.scss,写入以下内容:

/* 改变主题色变量 */
$--color-primary: teal;

/* 改变 icon 字体路径变量,必需 */
$--font-path: '~element-ui/lib/theme-chalk/fonts';

@import "~element-ui/packages/theme-chalk/src/index";

之后,在项目的入口文件中,直接引入以上样式文件即可(无需引入 Element 编译好的 CSS 文件):

import Vue from 'vue'
import Element from 'element-ui'
import './element-variables.scss'

Vue.use(Element)

需要注意的是,覆盖字体路径变量是必需的,将其赋值为 Element 中 icon 图标所在的相对路径即可。

webpack的打包方式,会将elementui图标的字符压缩,导致图片在页面上变成乱码。

需要设置sass-loader的配置,将压缩关了。

修改vue.config.js文件,增加

  css: {
    loaderOptions: {
      sass: {
        sassOptions: {
          // 输出风格改为 expanded (避免伪元素中的字符被转义)
          outputStyle: 'expanded'
        }
      }
    }
  }

这样打包出来的css文件开头会有 @charset "UTF-8";

保证浏览器解析css文件不会用默认的字符集。