uniapp切换主题颜色(后台管理系统)

这篇具有很好参考价值的文章主要介绍了uniapp切换主题颜色(后台管理系统)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:在现有已经做好的后台管理系统添加一个切换主题颜色的功能

分析:该项目用了很多uniapp的组件,css样式没有统一,类名也没有统一

使用混合mixin.scss,并使用vuex

效果图

uniapp切换主题颜色(后台管理系统)

uniapp切换主题颜色(后台管理系统)

功能:按钮背景颜色、部分样式、字体图标、分页跟随主题颜色变化也变化

每一个用户喜欢的主题颜色都不一样,后端已经在用户数据表加了一个用于存储主题颜色的字段默认是1(绿色)

1.先在用户登录成功后,把用户的主题颜色保存在本地存储中

uniapp切换主题颜色(后台管理系统)

 uni.setStorageSync('theme',data.Theme);//当前用户的主题配色

 文章来源地址https://www.toymoban.com/news/detail-693564.html

2.在vuex添加全局变量

uniapp切换主题颜色(后台管理系统)

uniapp切换主题颜色(后台管理系统)

 有些人的可能不是这样的,但是不重要,我们只需要在你们的vuex的 state、mutations、getters、actions添加对应的方法就行,直接上代码

curThemeType是存放当前用户的主题颜色的标识符,我这边后端用1,2,3,4来表示不同颜色,你们也可以不需要写,

curThemeColor存放的是颜色值,后期是全局的一个颜色值,只需要在用的地方用插值表达式或者字符拼接的方式就行

 

 3.在存放公共文件里添加一个mixin.js

uniapp切换主题颜色(后台管理系统)

代码:

import { mapGetters, mapMutations } from 'vuex';
export default {
install(Vue) {
Vue.mixin({
data() {
return {
};
},
methods: {
...mapMutations(['setCurThemeType','setCurThemeType2']),
},
computed: {
...mapGetters(['themeType','themeType2'])
},

});
}
};

 

 4.然后去入口文件引入

uniapp切换主题颜色(后台管理系统)

 

import myMixin from './common/mixin.js'; //--实现换肤 引入 myMixin
Vue.use(myMixin) //实现换肤 调用 myMixin

 

5.准备工作已经好了,现在去APP.vue里面判断用户上一次使用的主题颜色也就是之前在登录存在本地存储的值

uniapp切换主题颜色(后台管理系统)

代码:

先在APP.vue引入

//换肤引入
import {mapMutations} from 'vuex';

然后在onLaunch()里去拿本地存储的值,然后赋予颜色值然后存在vuex,然后就可以使用了

onLaunch: function() {
console.log('App Launch');
const that = this;
//项目启动获取缓存中的皮肤
let SwitchNameID = parseInt(uni.getStorageSync('theme')); //当前配色ID
if (SwitchNameID == '') {
SwitchNameID = 1;
}
console.log('当前配色ID', SwitchNameID);
// Vuex
that.setCurThemeType(SwitchNameID);
//用于动态的改变定义在vuex当中的变量,达到动态换肤的效果
that.$store.dispatch('handleActionAgree', SwitchNameID); //存放当前ID

//--------- color色--------------------------
// 背景颜色跟单选多选的颜色
let colorS = '';
if (SwitchNameID == 1) {
colorS = '#7AC463';
} else if (SwitchNameID == 2) {
colorS = '#EFB46F';
} else if (SwitchNameID == 3) {
colorS = '#cf2532';
} else if (SwitchNameID == 4) {
colorS = '#3c9cff';
}
// Vuex
console.log('当前颜色值', colorS);
that.setCurThemeType2(colorS);
//用于动态的改变定义在vuex当中的变量,达到动态换字体颜色换单选多选颜色的效果
that.$store.dispatch('handleActionAgree2', colorS); //存放当前颜色
window.document.documentElement.setAttribute('data-theme', SwitchNameID);
},

 

6.去页面使用,使用的方法是在页面上使用style绑定变量值

1.:style="{ 'background-color': themeType2}" 

2.:style="'background-color:' + themeType2"  (微信小程序用这种)

 

uniapp切换主题颜色(后台管理系统)

 

uniapp切换主题颜色(后台管理系统)

 

themeType2就是一个全局的颜色值,在需要用的地方直接使用就行了

 在这里其实已经可以实现根据后端的值去改变主题颜色了,

 

 

7.接下来写功能.根据自己的需求在对应的地方添加下拉框,或者选择框,由于我这边的框架是uniapp而且需要在顶部显示,我就在对应的文件写以下的代码

在你需要的地方的文件加入下拉框(uniapp官网),我这边的下拉框数据是后端已经写好的,方便后期维护(你们根据自己的情况来,也可以自己定义下拉框内容)

uniapp切换主题颜色(后台管理系统)

我的数据长这样

uniapp切换主题颜色(后台管理系统)

接下来在这个页面的created()或者onLoad()里把本地存储的拿出来存到vuex中

主要代码:

let SwitchNameID = parseInt(uni.getStorageSync('theme')); //当前配色ID
if (SwitchNameID == '') {
SwitchNameID = 1;
}
// Vuex
that.setCurThemeType(SwitchNameID);
//用于动态的改变定义在vuex当中的变量,达到动态换肤的效果
that.$store.dispatch('handleActionAgree', SwitchNameID);
window.document.documentElement.setAttribute('data-theme', SwitchNameID);

 

 

然后写一个方法,在用户在下拉框选择了其他颜色,就是去修改vuex的值,实现切换项目中的主题颜色,然后再去修改数据库该用户里面的值

uniapp切换主题颜色(后台管理系统)

 代码:

// 配色
ChangeSwitchTopic(e) {
const that = this;
let i = e.detail.value
that.SwitchTopicName = that.SwitchTopicAddList[i].BasicDataName;
let SwitchValue = that.SwitchTopicAddList[i].BasicDataCode;
// 将选中的模式存储缓存
uni.setStorageSync('theme', parseInt(SwitchValue));
// Vuex
that.setCurThemeType(SwitchValue);
//用于动态的改变定义在vuex当中的变量,达到动态换肤的效果
that.$store.dispatch('handleActionAgree', parseInt(SwitchValue));

// 然后再调用接口去修改当前用户喜欢的配色,下次就还是这套
let value = uni.getStorageSync("user");
api.get({
url: 'User/SetTheme',
data: {
UserID: value, //登录的商家用户ID
LanguageType: that.LanguageTypeId,
Theme: SwitchValue, //配色ID
},
success: data => {
console.log('配色切换', data);
}
});

//--------- color色--------------------------
// 颜色跟单选多选的颜色是在APP.vue跟top-window.vue设置的,如果要添加或者修改,需要修改两个地方
let colorS = '';
if (SwitchValue == 1) {
colorS = '#7AC463';
} else if (SwitchValue == 2) {
colorS = '#EFB46F';
} else if (SwitchValue == 3) {
colorS = '#cf2532';
} else if (SwitchValue == 4) {
colorS = '#3c9cff';
}
// Vuex
this.setCurThemeType2(colorS);
//用于动态的改变定义在vuex当中的变量,达到动态换字体颜色换单选多选颜色的效果
this.$store.dispatch('handleActionAgree2', colorS);

window.document.documentElement.setAttribute('data-theme', SwitchValue);
},

 

结束---------

这样已经可以实现基本切换主题颜色的颜色值了

注意:微信小程序以下方法不可用

但是那些用了uniapp组件的没办法直接在页面上修改,就只能再添加一个混合了(mixin.scss)

1.再创建一个mixin.scss

uniapp切换主题颜色(后台管理系统)

 代码:

// 想要在css用,需要先在uni.scss里引入
// 添加或者修改,需要在uni.scss里添加或者修改
// @include ft_color($bj-color-theme1);
// @include bg_color($bj-color-theme1);
// $bj-color-theme1 是在uni.scss里定义的颜色,data-theme会判断当前是什么值用对应的颜色
//该方法针对uniapp原生组件无法在view视图直接修改,要操作css样式修改的

@mixin bg_color($color) { //更换背景
background-color: $color ;
[data-theme = "1"] & {
background-color: $bj-color-theme1 !important;
}
[data-theme = "2"] & {
background-color: $bj-color-theme2 !important;
}
[data-theme = "3"] & {
background-color: $bj-color-theme3 !important;
}
[data-theme = "4"] & {
background-color: $bj-color-theme4 !important;
}
}
@mixin ft_color($color) { //更换文字颜色
color: $color;
[data-theme = "1"] & {
color: $bj-color-theme1 !important;;
}
[data-theme = '2'] & {
color: $bj-color-theme2 !important;;
}
[data-theme = "3"] & {
color: $bj-color-theme3 !important;;
}
[data-theme = '4'] & {
color: $bj-color-theme4 !important;;
}
}

 

 然后去uni.scss引入并且定义初始颜色

uniapp切换主题颜色(后台管理系统)

 @import '@/common/mixin.scss';//引入混入背景

/*
切记一定要在 uni.scss 预加载文件中 引入 自定义的 mixin.scss 并设置皮肤色
*/

$bj-color-theme1: #7AC463; //背景主题颜色默认(绿色)
$bj-color-theme2: #EFB46F; //背景主题颜色1(黄色)
$bj-color-theme3: #cf2532; //背景主题颜色2(红色)
$bj-color-theme4: #3c9cff; //背景主题颜色3(蓝色)

 

 

2.再去APP.vue修改组件颜色,F12找到对应的类名,然后修改

uniapp切换主题颜色(后台管理系统)

 

<style lang="scss">

//时间选择器选中颜色
.uni-calendar-item--multiple .uni-calendar-item--before-checked,
.uni-calendar-item--multiple .uni-calendar-item--after-checked,
.uni-calendar-item__weeks-box .uni-calendar-item--checked,
.uni-datetime-picker--btn,
{
@include bg_color($bj-color-theme1);
}
//时间选择器选中颜色 -- 确定按钮
.confirm-text{
@include ft_color($bj-color-theme1);
}

 </style>

 

 效果;

uniapp切换主题颜色(后台管理系统)

uniapp切换主题颜色(后台管理系统)

这是我的工作中实现的,有很多不足,还需要努力,供大家参考,网上还有很多方式,根据自己的需求来修改

 

到了这里,关于uniapp切换主题颜色(后台管理系统)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3管理系统中后台返回pdf格式的文件流,前端如何预览?以及uniapp微信小程序中后台返回的base64位的pdf文件如何预览?

    后台返回的是base64格式的pdf文件,首先需要解析base64文件的插件 image-tools 1 安装并引入插件 2 封装预览pdf的函数 3 调用接口获取数据

    2024年01月18日
    浏览(93)
  • ElementUI主题颜色动态切换并缓存

    今天给大家分享一下在Vue中使用ElementUI时,想切换主题颜色的两种方式。 第一种:静态改变项目中的主题颜色 比较简单,稍微带过: 项目中创建 element-variables.scss 文件,编写内容: 之后,在项目的入口文件中,直接引入以上样式文件即可(无需引入 Element 编译好的 CSS 文件

    2024年02月14日
    浏览(40)
  • 前端实现动态切换主题色-使用 css/less 动态更换主题颜色(换肤功能)或通过单击更改背景颜色

    提示: 以下是本篇文章正文内容,主要描述 使用 css/less 动态更换主题色(换肤功能) 提示: 使用 css/less 动态更换主题色(换肤功能), 方法共通,不限制技术栈: 其实在日常项目开发中经常会遇到有些用户想要一些自定义的的主题色来满足不同的视觉需求,这时候就需

    2024年02月15日
    浏览(67)
  • 后台管理系统权限管理详解

    简述权限管理: 你可以在后台通过一个 tree 控件或者其它展现形式给每一个页面动态配置权限,之后将这份路由表存储到后端。当用户登录后得到roles,前端根据roles去向后端请求可访问的路由表,从而动态生成可访问页面,之后就是 router.addRoutes 动态挂载到router 上,你会发

    2024年02月05日
    浏览(38)
  • 若依框架后台管理系统-忘记后台管理密码-忘记密码重置方法

    1. 无盐老版 1.1、生成密码密文 1.2、替换数据库中密码 2. 加盐新版 (今天 2022-03-16) 2.1、生成密码密文 2.2、替换数据库中密码 补充说明 参考资料 管理后台忘记密码两步解决: 找到工具类: com.ruoyi.common.utils.SecurityUtils 添加 main 方法:打印出密码密文 大家好,我是笨笨,笨

    2024年02月15日
    浏览(43)
  • 微信小程序考勤签到管理系统+后台管理系统

    《微信小程序考勤签到管理系统+后台管理系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 本系统包含微信小程序做的考勤前台和Java做的后台管理系统: 微信小程序——考勤前台涉及技术: WXML 和 WXSS、JavaScript Java——考勤后台涉及技术

    2024年02月09日
    浏览(49)
  • 后台管理系统

    后台管理系统主要是我们内部人员使用的一款用来管理我们产品的一个系统,然后呢,我们今天写的呢是一个电商的后台管理系统。主要是可以用来管理我们的用户还有我们是商品的。 我们这个系统呢采用的是一个前后端分离的模式,主要是使用后端给我们的接口来实现的,

    2023年04月10日
    浏览(32)
  • 后台用户管理系统

    layui(谐音:类UI) 是一款采用自身模块规范编写的 前端 UI 框架 ,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。 由国人开发,16年出厂的框架,其主要提供了很多好看、方便的样式,并且基本拿来即用,和Bootstrap有些相似,但该框架有个极大的好处就是定义了

    2024年02月02日
    浏览(45)
  • 后台管理系统(第一天)

    1、后台管理系统项目简介 什么是后台管理系统项目? 在前端领域当中,开发后台管理系统项目,并非是Java,PHP等后台语言项目在前面课程当中,我们已经开发了一个项目【尚品汇电商平台项目】,这个项目主要针对的是用户(游客),可以让用户在平台当中购买产品。 但

    2024年02月05日
    浏览(86)
  • Vue开发后台管理系统

    在你要创建项目的文件夹下打开cmd命令框: 在终端输入 xxx为项目名称,如下图所示: 回车选择  Manually select features 访问Element-UI官网根据文档提示安装element UI插件 ​ 如果上方命令安装不了出错,如下图所示: ​  有可能是npm的版本和elementUi不兼容,可以使用输入下面指令

    2024年02月14日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包