传送门:Less 快速入门

1. 准备两个less文件:

1.1 theme.less 用于定义控制样式的函数

.theme(@Background: #1D2B40, @Border: #000017,){.header{ background: @Background; border-bottom: 1px solid @Border; }}

2.2 color.less 用于调用函数传值

@import url(‘./theme.less’);/* 黑色主题(默认主题) */.theme_default { .theme()}/* 蓝色主题(传入要更换的颜色) */.theme_blue{ .theme(@Background: #377DFF, @Border: #0167DF,)}

2. 在main.js导入color.less 作为全局样式:

import ‘./less/color.less’;

3.添加点击换肤的事件:

<DropdownMenu slot=”list” ><DropdownItem @click.native=”changeTheme(‘theme_default’)”>黑色风格</DropdownItem><DropdownItem @click.native=”changeTheme(‘theme_blue’)”>蓝色风格</DropdownItem></DropdownMenu>//点击换肤事件changeTheme(theme){//给body添加class名,并将该class保存到localstorage中 document.body.className = theme; localStorage.setItem(‘themeColor’, theme); //把当前主题值传到其他组件… //areaUtil.$emit(‘changeThemes’, theme);}

4. 在index.html文件里给body初始化的时候添加class:

<script> var bodyClass = localStorage.getItem(‘themeColor’) ? localStorage.getItem(‘themeColor’) : ‘theme_default’; document.body.className = bodyClass;</script>

优点:易于理解,快速上手开发
缺点:需要把组件中需要换颜色或图标的样式单独拎出来写,不方便维护,因此应该注意变量名语义化、多写注释