1、先创建一个 _theme.scss文件 作为各类主题颜色的整理
$themes: (
light: (
//字体
font_color1: #414141,
font_color2: white,
$color-yellow: rgb(238, 255, 0),
//背景
background_color1: $color-red,
background_color2: #f0f2f5,
background_color3: red,
background_color4: #2674e7,
//边框
border_color1: #3d414a),
dark: (
//字体
font_color1: #a7a7a7,
font_color2: white,
//背景
background_color1: $color-light-gray,
$color-yellow: rgb(0, 255, 0),
background_color2: #283142,
background_color3: #1e6ceb,
background_color4: #323e4e,
//边框
border_color1: #3d414a));
//变量
$color-red: rgb(0, 0, 0);
// $color-yellow: rgb(83, 149, 235);
$color-white: white;
$color-light-gray: #818380;))
2、然后再创建一个 _handle.scss 文件 作为sass混合函数的存放 主要是哪个页面需要则引用即可
@import "./_themes.scss";
//遍历主题map
@mixin themeify {
@each $theme-name,
$theme-map in $themes {
// !global 把局部变量强升为全局变量
$theme-map: $theme-map !global;
//判断html的data-theme的属性值 #{}是sass的插值表达式
//& sass嵌套里的父容器标识 @content是混合器插槽,像vue的slot
[data-theme="#{$theme-name}"] & {
@content;
}
}
} //声明一个根据Key获取颜色的function
@function themed($key) {
@return map-get($theme-map, $key);
} //获取背景颜色
@mixin background_color($color) {
@include themeify {
background-color: themed($color)!important;
}
} //获取字体颜色
@mixin font_color($color) {
@include themeify {
color: themed($color)!important;
}
} //获取边框颜色
@mixin border_color($color) {
@include themeify {
border-color: themed($color)!important;
}
}
3、在页面中使用 , app.vue
html  
<div class="btn">
<el-button type="warning" @click="theme('light')">浅色</el-button>
<el-button type="danger" @click="theme('dark')">深色</el-button>
</div>
js
//换主题
theme(type) {
// this.$store.commit("upDate", { themeType: type });
window.document.documentElement.setAttribute("data-theme", type);
},
css

@import "@/assets/_handle.scss"; //修改任何元素都可以作为等级最高级 原理就是根据html标签的 [name]来判断主题类型进行修改
body {
@include background_color(background_color4);
.box {
@include font_color("$color-yellow");
@include background_color($color-yellow);
@include border_color("border_color1");
}
.el-button {
// @include background_color($color-yellow);
&:hover {
@include background_color($color-yellow);
}
}
}

 

 
 
 
 
 
 

vue2 sass主题一键修改功能的更多相关文章

  1. 【Android进阶】使用第三方平台ShareSDK实现新浪微博的一键分享功能

    在公司最近的一个项目中,需要实现一键分享功能,在这里我使用的是第三方平台ShareSDK,将使用经验与大家分享 先看效果图 主界面 分享界面 由于第一次使用,所以需要先进行新浪授权,授权界面 分享结果 ...

  2. 使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理

    本章将和大家简单分享下如何使用VS中自带的一键打包功能将我们的ASP.NET Core类库打包并将程序包(类库)发布到NuGet平台上进行管理. 一.注册并登录NuGet平台 NuGet官网:http ...

  3. 如何让照片中的人物笑起来?HMS Core视频编辑服务一键微笑功能,让人物笑容更自然

    最近一键"露齿笑"席卷全网,无论是短视频用户还是社交App用户都在使用这项黑科技.当三两好友聚会拍集体照留念时,为了处理个别人的表情"瑕疵",让大家都尽量保持微 ...

  4. KingbaseES R6 集群一键修改集群和数据库参数测试案例

    ​ 案例说明: 集群环境修改集群或数据库参数,需要在每个node上都要修改,在每个节点而执行修改操作,容易出现漏改或节点上参数不一致等错误:在KingbaseES V8R6的集群中增加了,一键修改参数 ...

  5. KingbaseES R3 集群一键修改集群用户密码案例

    案例说明: 在KingbaseES R3集群的最新版本中增加了kingbase_monitor.sh一键修改集群用户密码的功能,本案例是对此功能的测试. kingbaseES R3集群一键修改密码说明 ...

  6. KingbaseES R6 集群sys_monitor.sh change_password一键修改集群用户密码

    案例说明: kingbaseES R6集群用户密码修改,需要修改两处: 1)修改数据库用户密码(alter user): 2)修改.encpwd文件中用户密码: 可以通过sys_monitor.sh ...

  7. php大力力 [052节] php数据库页面修改功能

    php大力力 [052节] php数据库页面修改功能

  8. android一键分享功能不使用任何第三方sdk

    在android中有自带的一键分享功能,不过它会把所有带分享的应用都找出来,如果我们只需要一些常见的分享应用,该如何做呢? 下面看我的效果图(横屏和竖屏自动适配): 接下来看我的调用(支持图片和文字分 ...

  9. 项目开发-->一键登录功能汇总

    开发网站经常会提供一些一键登录功能,如:QQ.新浪微博.淘宝账号.开心网账号.人人网账号等进行快捷登录,下面记录几个常用的开放平台地址,方便以后开发需要. 1.QQ互联 2.新浪微博 网站接入QQ互联 ...

随机推荐

  1. 小程序入门系列之 tabBar

    本系列为简单入门系列,以一定概括性思路来叙述内容,具体可以查看官网 大部分的电商应用都是底部或顶部多 tab 的模式. 下面我们从配置角度来分析一下: 第一个:position 配置如下: 默认是 b ...

  2. ubantu系统之快捷键使用

    1. 文件管理器中,目录切换为可以编辑的状态: ctrl + l 2. gedit 搜索 : ctrl + h

  3. Android修改app图标

    1.按照路径找到AndroidManifest.xml中的icon 2.在drawable添加一个png图片 3.然后在AndroidManifest.xml中的icon,修改其中的值 android ...

  4. jq移动端图片预览 (fly-zomm-img.js)

    效果图: ===>==> 里面还与很多属性设置: index  关闭按钮等等 代码: //html-----------------------<div class="he ...

  5. 彻底弄懂小程序e.target与e.currentTarget

    一.小程序中关于事件对象  e  的属性中有两个特别重要的属性:target与currentTarget属性:对于这两个属性,官方文档上的解释是: target:事件源组件对象 currentTarg ...

  6. Exchange统计邮箱数量

    以Exchange管理员身份登录,打开PowerShell控制台. 1.查询Exchange组织邮箱数量 键入以下命令. Get-Mailbox | Measure-Objcet 2.查询某数据库邮箱 ...

  7. M1芯片使用cocoapods 报错[!] Oh no, an error occurred

    [解决方式] 命令行1(编译): sudo arch -x86_64 gem install ffi 命令行2(安装): arch -x86_64 pod install 原出处:https://gi ...

  8. docker 国内镜像源

    参考:docker 国内镜像源 作者:Joncc Linux环境 # vi /etc/docker/daemon.json { "registry-mirrors": [" ...

  9. python---用顺序表实现双端队列

    class Dqueue(object): """双端队列""" def __init__(self): self.__list = [] ...

  10. oracle之lsnrctl命令

    采样: [oracle@sh02 ~]$ cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.4 (Santiago) ...