JQuery 前台切换网站的样式实现


Posted in Javascript onJune 22, 2009

但如果你想为网站添加多一些样式,让访客选择;又或者你想调整一下网站的样式,而在决定前让访客先体现的话,这也是一个很好的办法,省去总是切换主题的痛苦。
切换效果参照本站。
1. 切换样式的按钮代码:

<div id="style-switch"> 
<ul> 
<li><a href="#?style=white" rel="white" class="styleswitch white">Day</a></li> 
<li><a href="#?style=black" rel="black" class="styleswitch black">Night</a></li> 
</ul> 
</div>

上面的按钮代码请根据你的网站设计放置。比如在我这里是放到header.php文件中的。
2. 样式引用代码:
<?php if($_COOKIE['style'] == 'black') : ?> 
<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/black.css" title="black" media="screen" /> 
<link rel="alternate stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/white.css" title="white" media="screen" /> 
<?php else : ?> 
<link rel="stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/white.css" title="white" media="screen" /> 
<link rel="alternate stylesheet" type="text/css" href="<?php bloginfo('template_url'); ?>/black.css" title="black" media="screen" /> 
<?php endif; ?>

在这里我简单说明一下:
因为在后面的js代码中会于浏览器的cookie部分写入一个cookie记录“style”,所以在这里我会让浏览器根据记录进行样式的调用(这里为两个样式,一个“white”,另一个“black”)。
当浏览器存在“style”的cookie记录,并记录为“black”时候,则先读取black.css文件,这可以说是主样式文件;及后再读取辅助样式(就是供需要切换的样式),white.css。
如果浏览器没有任何“style”的样式cookie记录,或者“style”的样式cookie记录为“white”时候,则主题先读取white.css文件,再读取black.css文件。
在这里需要补充的是,使用PHP的cookie读取会比使用js的cookie读取更为有效。因为我原来是利用js进行cookie的读取动作,但由于js的加载还是需要那么一点时间,所以在切换样式后的页面浏览中并不完美。如果你以前发现选择黑色主题后,再浏览页面,会出现先是一瞬间的白色主题,然后才是黑色主题的现象。这就是我要说明的情况了。现在使用PHP代码则不再存在这个不足。
3. Javascript部分代码:(注意前提是你已经在网站中调用了JQuery库)
(function($) 
{ 
$(document).ready(function() { 
$('.styleswitch').click(function() { 
$('body').append('<div id="overlay" />'); 
$('#overlay') 
.css({ 
display: 'none', 
position: 'absolute', 
top:0, 
left: 0, 
width: '100%', 
height: '2000%', 
zIndex: 1000, 
background: 'black' 
}) 
.fadeIn(500); 
switchStylestyle(this.getAttribute("rel")); 
$('#overlay').fadeOut(500); 
return false; 
}); 
}); 
function switchStylestyle(styleName) 
{setTimeout(function() { 
$('link[@rel*=style][title]').each(function(i) 
{ 
this.disabled = true; 
if (this.getAttribute('title') == styleName) this.disabled = false; 
});}, 500); 
createCookie('style', styleName, 365); 
} 
})(jQuery);

上面的部分是点击动作部分。我在中间添加了一段#overlay的块样式是为了在切换过程中制作一个灯箱效果,这样会比突然的切换来得更为自然。
然后还需要添加产生cookie记录的功能代码:
function createCookie(name,value,days) 
{ 
if (days) 
{ 
var date = new Date(); 
date.setTime(date.getTime()+(days*24*60*60*1000)); 
var expires = "; expires="+date.toGMTString(); 
} 
else var expires = ""; 
document.cookie = name+"="+value+expires+"; path=/"; 
}

还有添加删除cookie记录的功能代码:
function eraseCookie(name) 
{ 
createCookie(name,"",-1); 
}

到此,完成上面三部后就可以了,希望大家看得明白。
Javascript 相关文章推荐
JavaScript中“基本类型”之争小结
Jan 03 Javascript
使用js实现关闭js弹出层的窗口
Feb 10 Javascript
js判断ie版本号的简单实现代码
Mar 05 Javascript
js点击事件链接的问题解决
Apr 25 Javascript
浅谈jquery中delegate()与live()
Jun 22 Javascript
jQuery操作Table技巧大汇总
Jan 23 Javascript
node.js平台下的mysql数据库配置及连接
Mar 31 Javascript
Node.js搭建小程序后台服务
Jan 03 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
Apr 05 Javascript
JS执行控制之节流模式实例分析
Dec 21 Javascript
Vue-cli打包后如何本地查看的操作
Sep 02 Javascript
如何将JavaScript将数组转为树形结构
Jun 02 Javascript
利用JQuery为搜索栏增加tag提示
Jun 22 #Javascript
web 页面分页打印的实现
Jun 22 #Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
Jun 22 #Javascript
实现超用户体验 table排序javascript实现代码
Jun 22 #Javascript
js 单引号 传递方法
Jun 22 #Javascript
使弱类型的语言JavaScript变强势
Jun 22 #Javascript
Javascript 代码也可以变得优美的实现方法
Jun 22 #Javascript
You might like
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
php的memcache类分享(memcache队列)
2014/03/26 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
google地图的路线实现代码
2009/08/20 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
使用Raygun对Node.js应用进行错误处理的方法
2015/06/23 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
AngularJs中 ng-repeat指令中实现含有自定义指令的动态html的方法
2017/01/19 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
python使用tkinter实现简单计算器
2018/01/30 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
python读写csv文件方法详细总结
2019/07/05 Python
python datetime处理时间小结
2020/04/16 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
应用英语专业自荐信
2014/01/26 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
学习考察心得体会
2014/09/04 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
教师群众路线心得体会
2014/11/04 职场文书
贷款工作证明模板
2015/06/12 职场文书
Java实现学生管理系统(IO版)
2022/02/24 Java/Android