element-ui iconfont乱码问题处理
2022-10-08 17:22:18
285
{{single.collect_count}}

一、问题

         

 

      使用element-UI的项目,打包部署以后,偶尔会出现iconfont显示乱码,但是刷新后又会好。研究后,查看打包后的css, 图标字体的content经过scss编译以后变成了这样

             

 

      不过正常情况下图标还是会显示的,但是偶尔进入页面后,所有的iconfont图标会变成乱码。

二、原因

       1、主要原因是sass 编译问题,针对iconfont 编译后会乱码,

       2、项目中引用element,改了主题色,引入的elemtui 的scss文件包含了iconfont.scss,经过sass 会重新编译,

          

/* 改变主题色变量 */$--color-primary: #CCA05D;/* icon font path, required */$--font-path: '~element-ui/lib/theme-chalk/fonts';@import "~element-ui/packages/theme-chalk/src/index";

三、解决

       对于第一个原因,sass的编译问题我们改变不了,所以我们就针对第2个原因来处理。如果引入的是elementui 编译后的css 文件,sass就不会再编译了,但我们这里需要改变主题色 需要用到scss变量,

      所以最简单粗暴的方法是:

     1. 项目里自定义element-ui主题的文件element-variables.scss,这个文件里本来有一个引入所有element组件scss文件的一行,这个文件其实也是包含了element所有模块的的scss文件

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

       把这一行去掉,然后直接引入所有的scss文件,当然要去掉iconfont的scss
       这里是所有组件,你也可以按需引入:

     以下是所有scss文件,可以复制哦

/* 改变主题色变量 */$--color-primary: #CCA05D;/* icon font path, required */$--font-path: '~element-ui/lib/theme-chalk/fonts';@import "~element-ui/packages/theme-chalk/src/common/transition.scss";@import "~element-ui/packages/theme-chalk/src/pagination.scss";@import "~element-ui/packages/theme-chalk/src/dialog.scss";@import "~element-ui/packages/theme-chalk/src/autocomplete.scss";@import "~element-ui/packages/theme-chalk/src/dropdown.scss";@import "~element-ui/packages/theme-chalk/src/dropdown-menu.scss";@import "~element-ui/packages/theme-chalk/src/dropdown-item.scss";@import "~element-ui/packages/theme-chalk/src/menu.scss";@import "~element-ui/packages/theme-chalk/src/submenu.scss";@import "~element-ui/packages/theme-chalk/src/menu-item.scss";@import "~element-ui/packages/theme-chalk/src/menu-item-group.scss";@import "~element-ui/packages/theme-chalk/src/input.scss";@import "~element-ui/packages/theme-chalk/src/input-number.scss";@import "~element-ui/packages/theme-chalk/src/radio.scss";@import "~element-ui/packages/theme-chalk/src/radio-group.scss";@import "~element-ui/packages/theme-chalk/src/radio-button.scss";@import "~element-ui/packages/theme-chalk/src/checkbox.scss";@import "~element-ui/packages/theme-chalk/src/checkbox-button.scss";@import "~element-ui/packages/theme-chalk/src/checkbox-group.scss";@import "~element-ui/packages/theme-chalk/src/switch.scss";@import "~element-ui/packages/theme-chalk/src/select.scss";@import "~element-ui/packages/theme-chalk/src/button.scss";@import "~element-ui/packages/theme-chalk/src/button-group.scss";@import "~element-ui/packages/theme-chalk/src/table.scss";@import "~element-ui/packages/theme-chalk/src/table-column.scss";@import "~element-ui/packages/theme-chalk/src/date-picker.scss";@import "~element-ui/packages/theme-chalk/src/time-select.scss";@import "~element-ui/packages/theme-chalk/src/time-picker.scss";@import "~element-ui/packages/theme-chalk/src/popover.scss";@import "~element-ui/packages/theme-chalk/src/tooltip.scss";@import "~element-ui/packages/theme-chalk/src/message-box.scss";@import "~element-ui/packages/theme-chalk/src/breadcrumb.scss";@import "~element-ui/packages/theme-chalk/src/breadcrumb-item.scss";@import "~element-ui/packages/theme-chalk/src/form.scss";@import "~element-ui/packages/theme-chalk/src/form-item.scss";@import "~element-ui/packages/theme-chalk/src/tabs.scss";@import "~element-ui/packages/theme-chalk/src/tab-pane.scss";@import "~element-ui/packages/theme-chalk/src/tag.scss";@import "~element-ui/packages/theme-chalk/src/tree.scss";@import "~element-ui/packages/theme-chalk/src/alert.scss";@import "~element-ui/packages/theme-chalk/src/notification.scss";@import "~element-ui/packages/theme-chalk/src/slider.scss";@import "~element-ui/packages/theme-chalk/src/loading.scss";@import "~element-ui/packages/theme-chalk/src/row.scss";@import "~element-ui/packages/theme-chalk/src/col.scss";@import "~element-ui/packages/theme-chalk/src/upload.scss";@import "~element-ui/packages/theme-chalk/src/progress.scss";@import "~element-ui/packages/theme-chalk/src/spinner.scss";@import "~element-ui/packages/theme-chalk/src/message.scss";@import "~element-ui/packages/theme-chalk/src/badge.scss";@import "~element-ui/packages/theme-chalk/src/card.scss";@import "~element-ui/packages/theme-chalk/src/rate.scss";@import "~element-ui/packages/theme-chalk/src/steps.scss";@import "~element-ui/packages/theme-chalk/src/step.scss";@import "~element-ui/packages/theme-chalk/src/carousel.scss";@import "~element-ui/packages/theme-chalk/src/scrollbar.scss";@import "~element-ui/packages/theme-chalk/src/carousel-item.scss";@import "~element-ui/packages/theme-chalk/src/collapse.scss";@import "~element-ui/packages/theme-chalk/src/collapse-item.scss";@import "~element-ui/packages/theme-chalk/src/cascader.scss";@import "~element-ui/packages/theme-chalk/src/color-picker.scss";@import "~element-ui/packages/theme-chalk/src/transfer.scss";@import "~element-ui/packages/theme-chalk/src/container.scss";@import "~element-ui/packages/theme-chalk/src/header.scss";@import "~element-ui/packages/theme-chalk/src/aside.scss";@import "~element-ui/packages/theme-chalk/src/main.scss";@import "~element-ui/packages/theme-chalk/src/footer.scss";@import "~element-ui/packages/theme-chalk/src/timeline.scss";@import "~element-ui/packages/theme-chalk/src/timeline-item.scss";@import "~element-ui/packages/theme-chalk/src/link.scss";@import "~element-ui/packages/theme-chalk/src/divider.scss";@import "~element-ui/packages/theme-chalk/src/image.scss";@import "~element-ui/packages/theme-chalk/src/calendar.scss";@import "~element-ui/packages/theme-chalk/src/backtop.scss";@import "~element-ui/packages/theme-chalk/src/infinite-scroll.scss";@import "~element-ui/packages/theme-chalk/src/page-header.scss";@import "~element-ui/packages/theme-chalk/src/cascader-panel.scss";@import "~element-ui/packages/theme-chalk/src/avatar.scss";@import "~element-ui/packages/theme-chalk/src/drawer.scss";@import "~element-ui/packages/theme-chalk/src/popconfirm.scss";@import "~element-ui/packages/theme-chalk/src/skeleton.scss";@import "~element-ui/packages/theme-chalk/src/skeleton-item.scss";@import "~element-ui/packages/theme-chalk/src/empty.scss";@import "~element-ui/packages/theme-chalk/src/descriptions.scss";@import "~element-ui/packages/theme-chalk/src/descriptions-item.scss";@import "~element-ui/packages/theme-chalk/src/result.scss";

   2、然后就是重新引入iconfont的css文件,在main.js里引入element的icon.css

import Element from 'element-ui'import "@/styles/element-variables.scss";import 'element-ui/lib/theme-chalk/icon.css'

      再次打包编译后,查看css 文件就不会有乱码了

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}