简易版主题切换功能的实现

前言:作为行业中的一个小菜,我希望能够不断的工作实践和学习探讨中慢慢成长。

因为公司最近的业务需要,平台要做一套主题切换的功能,起初采取的每套主题一个文件夹(含有多个css文件)的形式,然后在点击不同主题的时候调用不同的文件夹。后来经过查阅博客资料更换为动态修改css文件的形式。以下分别是两种方式实现过程:

1)原始方法

分别将每套风格的css都引入,然后设置缺省风格,将其他风格的css文件disabled掉,之后切换不同的风格调用不同的css

2)javascript动态修改css文件

1.关于css文件如何设置变量的具体实现可点击这里

2.css中设置的变量,那么我们就可以通过动态的改变变量值来达到切换主题的效果,查看具体的实现步骤请点击这里

3.到了这一步基本上已经成功实现了切换主题的功能,但还有个问题:页面刷新的时候主题还会恢复到原来的样子,即无法保存切换后的主题。我采用的实现方式是在数据库中新建一张主题表,将所有的主题全部放在这张表里面,通过using字段控制是否为当前使用的主题,具体代码如下。

doSave:function(){
		 var color = this.view.down('textfield[name=color]').getValue();
		 var type = "^#[0-9a-fA-F]{6}$" ;  
		 var re = new RegExp(type); //自定义主题功能的格式判定
	     var  type0 = "^[rR][gG][Bb][\(]((2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?),){2}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)[\)]{1}$";  
		 var  re0 = new RegExp(type0);
		 if(re.test(color)){
		     _APP.doChangeTheme(color);
		 }else if(re0.test(color)){
			 _APP.doChangeTheme(color);
		 }else{
			 return  KPSFT.pop.msg('操作结果','颜色值:'+color+' 有误、请重新输入!'); 
		 }
		var item = {idx:1,color:color,time:new Date(),using:1}; //将切换后的主题using值改为1
		var odata = THEME_INFO;
		odata.using = 0; //将其他主题的using值改为0
		var step=[{
			JSCODE:G_SAVE,CODE:G_UPDATE, DATA:item,RCODE:'SAVA_THEME',CLAZZ:'GR_THEME'
		},{
			JSCODE:G_SAVE,CODE:G_UPDATE, DATA:odata,RCODE:'SAVA_THEME',CLAZZ:'GR_THEME'
		}];
		__EXC_STEP(step,this,function(data,response){	//向后台发送ajax,请求成功后将当前的主题信息保存到全局变量THEME_INFO中,每次页面刷新的时候直接从THEME_INFO中取值,而不用去数据库再次查询		
			THEME_INFO = item;
		});
	},

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值