网站切换主题

主题皮肤切换功能在很多网站和系统中应用,用户可以根据此功能设置自己喜欢的主题颜色风格。本文介绍如何使用jQuery实现切换主题皮肤功能。

实现该功能的原理就是通过点击定义的主题样式,改变页面当前引用的主题CSS文件,并且将当前的主题样式写入cookie中或者写入数据库中,以便下次该用户重新访问页面时,调用的就是上次设置好的主题样式。

准备主题皮肤样式

首先,准备三个样式表CSS文件,分别是三种风格的主题皮肤,将其引入页面,放置在页面的<head>之间。

<link title="default" rel="stylesheet" type="text/css" href="css/default.css" /> <link title="blue" rel="stylesheet" type="text/css" href="css/blue.css" disabled="disabled" /> <link title="brown" rel="stylesheet" type="text/css" href="css/brown.css" disabled="disabled" /> 

注意我给每个<link>添加了title属性,是由用处的,另外我禁用了第2个和第3个CSS文件,就是默认起作用的是第1个CSS文件。

XHTML

<ul id="styles">     <li id="default">经典</li>     <li id="blue">淡蓝</li>     <li id="brown">棕色</li> </ul> 

三种主题风格用于点击切换,注意我分别给每个li加了id属性。

CSS

ul#styles{margin-top:10px} ul#styles li{float:left; width:50px; height:40px; line-height:40px; padding:2px;  margin-left:10px; border:1px solid #fff; text-align:center; color:#fff; cursor:pointer} ul#styles li.cur{border:1px solid #369; background-image:url(images/selected.gif);  background-repeat:no-repeat; background-position:4px 32px} ul#styles li#default{ padding: 0px; color: green;">#162934;} ul#styles li#blue{ padding: 0px; color: green;">#90c5e7} ul#styles li#brown{ padding: 0px; color: green;">#601f00} 

用CSS渲染XHTML,其中ul#styles li.cur是指当前主题选中下的样式,我用一个小勾表示当前选中的主题。

jQeury

首先我们要引入jquery库和jquery.cookie插件。jquery.cookie插件为jQuery提供了强大的cookie操作功能。

<script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/jquery.cookie.js"></script> 

接下来,当用户点击切换选择主题时,要发生以下动作:获取选择的主题(id),查看引用的CSS文件,如果发现其title属性值正好与当前选中的主题id值相等,则应用该主题CSS文件,同时将其他引用的CSS文件禁用,并且将当前选中的主题写入cookie中,设置cookie过期时间,最后将当前选中的主题按钮(li)设置为当前选中状态。具体看下面的代码:

$("#styles li").click(function(){     var style = $(this).attr("id");     $("link[title=‘"+style+"‘]").removeAttr("disabled");     $("link[title!=‘"+style+"‘]").attr("disabled","disabled");     $.cookie("mystyle",style,{expires:30});     $(this).addClass("cur").siblings().removeClass("cur"); }); 

注意,在本例中我将选中的样式保存在用户cookie中,cookie名称为”mystyle“,值为当前选中的主题值,过去时间为30天,即:expires:30

接着需要做的是页面载入时,读取主题cookie值,如果主题cookie存在则调用cookie值对应的主题样式CSS文件,并且设置当前主题按钮状态为选中状态,反之,则调用默认样式。代码如下:

var cookie_style = $.cookie("mystyle"); if(cookie_style==null){     $("link[title=‘default‘]").removeAttr("disabled");     $("#styles li#default").addClass("cur"); }else{     $("link[title=‘"+cookie_style+"‘]").removeAttr("disabled");     $("#styles li[id=‘"+cookie_style+"‘]").addClass("cur");     $("link[title!=‘"+cookie_style+"‘]").attr("disabled","disabled"); } 

将以上两段代码加入到$(function(){})中,工作到此完成,去看看效果吧。

值得一提的是,本文应用的cookie记录用户所选择设置的主题皮肤样式,但是当cookie到期或者用户清除了浏览器的COOKIE,亦或者用户换用其他浏览器浏览时,当前设置的主题就会失效。为了让用户永久保存选择的主题样式,必须将所选的主题与用户信息对应,并写入数据库,下次该用户登录就可以直接读取主题,当然,该方法应用在有用户权限范围的系统,如后台管理系统,个人中心等。

时间: 2024-10-11 08:38:17

网站切换主题的相关文章

网站切换主题,小demo模拟

我就直接抡代码了... <!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <title></title> <script src="js/jquery-1.12.2.js"></script> <script> var pre='css/'; $(functio

jQuery实现无刷新切换主题皮肤功能

jQuery实现无刷新切换主题皮肤功能 helloweba.com 作者:月光光 时间:2010-12-13 12:49 主题皮肤切换功能在很多网站和系统中应用,用户可以根据此功能设置自己喜欢的主题颜色风格,增强了用户体验.本文将围绕如何使用jQuery实现点击无刷新切换主题皮肤功能. 查看演示 实现该功能的原理就是通过点击定义的主题样式,改变页面当前引用的主题CSS文件,并且将当前的主题样式写入cookie中或者写入数据库中,以便下次该用户重新访问页面时,调用的就是上次设置好的主题样式. 准备

Android 学习笔记之切换主题

首先要有主题颜色 theme_color.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <resources> 3 4 <!--红--> 5 <color name="red">#FF6347</color> 6 <color name="dark_red">#F4511E</color> 7 &

【ExtJs】使用Cookie、切换主题和语言

转自:http://witmax.cn/extjs-cookie-theme-lang.html 使用Cookie: 1 2 3 Ext.state.Manager.setProvider(new Ext.state.CookieProvider());  Ext.state.Manager.set("key","value");  var cookievalue=  Ext.state.Manager.get("key"); 切换主题: 1 2

LNMP下wordpress无法切换主题,只显示当前主题解决方法

最近在lnmp下发现wordpress后台无法切换主题,只能显示当前主题,开始还以为是文件没传完,又重置了一遍,还是一样.百度得知,原来军哥的LNMP安装包默认关闭了scandir函数,为了安全考虑. 找到问题所在很简单,其实军哥在安装包里面已经说明关闭了一些函数,自己研究下哈.用winscp或者flashfxp登陆,找到 /usr/local/php/etc/php.ini 下载下来进行编辑,ctrl+f查找disable_functions,找到我们要使用的scandir函数,删除,然后上传

easyui切换主题

easyui 1.4.2下载地址:点击打开链接 主题有十多个吧 jquery cookie下载地址:点击打开链接 首先页面肯定先导入easyui相关的: 相关界面,我定义了一个切换主题的 <div style="position: absolute;right: 14px;top:42px;"> <div class="easyui-panel" style="padding:5px;font-size: 20px;font-weight

半夜一次惊心的网站切换

今天凌晨1点钟,闹铃响,准是起床,开始做公司的网站切换,有别的地方切换到北京的站点.熬到凌晨终于解析,测试都完成差不多了,开始睡觉: 下面我们先理清一下这些过程的准备工作: 1.首先肯定是要先搭建好lNMP环境,把性能调优做好. 2.备份数据作主从同步,北京同步到远程的机房,同步好数据. 3.用hosts的方式,把代码上次到web服务器进行测试.测试确认没有问题的可以进行下面的工作, 4.还有图片服务器确认好是否要转移. 5.转移之前再以前检查数据库是否还能同步,同步的时候有没有出问题,代码有没

win10 uwp 切换主题

本文主要说如何在UWP切换主题,并且如何制作主题. 一般我们的应用都要有多种颜色,一种是正常的白天颜色,一种是晚上的黑夜颜色,还需要一种辅助的高对比颜色.这是微软建议的,一般应用都要包含的颜色. 我们还可以自己定义多种颜色,例如金属.海蓝之光.彩虹雨.然而微软给我们的切换,简单只有亮和暗. 那么问题就是我们如何切换我们的主题. 在这前,我们先说如何制作主题,其实主题就是Dictionary,我们在解决方案加上两个文件夹,一个是View,一个是ViewModel,其中View将会放主题,如果主题比

Thinkphp动态切换主题

'DEFAULT_THEME' => '2014', 'TMPL_DETECT_THEME' => true, // 自动侦测模板主题 'THEME_LIST' => '2012,2014', // 支持的模板主题项 2012和2014的目录结构 app/tpl/2012 app/tpl/2014 切换主题时,在url上加上 http://www.xxx.com/?t=2012 就切换到2012的主题了,且以后所有的url后面无需再跟上?t=2012