ElementUI重复引入样式问题
2020/4/28 14:03:36
本文主要是介绍ElementUI重复引入样式问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
背景:vue-cli 创建的项目, Element UI 作为 UI 组件库,采用组件按需引入的方式并使用了在项目中改变 SCSS 变量 的方式定义主题。但是项目打包后,却出现两份样式文件,一份在 app.css
、一份在 chunk-vendors.css
中。app.css
中是全量引入的且样式不同于组件的默认样式,chunk-vendors.css
中是按需引入的且样式是组件的默认样式。
现状
- 借助 babel-plugin-component 按需引入组件
- 改变 Element 的样式变量,js 方式引入 import './element-variables.scss'
解决方案:
- 配置 babel-plugin-component(只能全量引入)
- 分为两个文件 var.sass 和 theme.sass(可全量引入)
重度依赖推荐使用 NO.1 ,轻度依赖推荐使用 NO.2
NO.1
修改 babel 文件的配置
目的为不打包 Element UI 组件库
{ presets: [['es2015', { modules: false }]], plugins: [ [ 'component', { libraryName: 'element-ui', // styleLibraryName: 'theme-chalk', // 删除此行 style: false, // 添加此行 } ] ] }
在项目中改变 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)
NO.2
新建 sass 文件
/* src/asseets/element-var.scss */ $--color-primary: teal; /* 改变 icon 字体路径变量,必需 */ $--font-path: '~element-ui/lib/theme-chalk/fonts'; @import "~element-ui/packages/theme-chalk/src/index"; /* src/asseets/element-theme.scss */ @import "~element-ui/packages/theme-chalk/src/input.scss"; @import "~element-ui/packages/theme-chalk/src/radio.scss"; // @import "~element-ui/packages/theme-chalk/src/checkbox.scss"; ...
在 App.vue 中引入
<style lang="scss"> @import '@/assets/css/element-var.scss'; @import '@/assets/css/element-theme.scss'; </style>
完整组件样式引入方式
Element UI 2.12.0
所有样式的引用
@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";
参考文章
1、https://github.com/ElemeFE/el...
如有侵权请告知
这篇关于ElementUI重复引入样式问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27Vite多环境配置资料:新手入门教程
- 2024-11-24Vite多环境配置学习:新手入门教程
- 2024-11-23实现OSS直传,前端怎么实现?-icode9专业技术文章分享
- 2024-11-22在 HTML 中怎么实现当鼠标光标悬停在按钮上时显示提示文案?-icode9专业技术文章分享
- 2024-11-22html 自带属性有哪些?-icode9专业技术文章分享
- 2024-11-21Sass教程:新手入门及初级技巧
- 2024-11-21Sass学习:初学者必备的简单教程
- 2024-11-21Elmentplus入门:新手必看指南
- 2024-11-21Sass入门:初学者的简单教程
- 2024-11-21前端页面设计教程:新手入门指南