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 相关文章推荐
关于取不到由location.href提交而来的上级页面地址的解决办法
Jul 30 Javascript
jquery的map与get方法详解
Nov 04 Javascript
浅谈checkbox的一些操作(实战经验)
Nov 20 Javascript
利用JS判断用户是否上网(连接网络)
Dec 23 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
Jun 02 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
Aug 31 Javascript
js字符串与Unicode编码互相转换
May 17 Javascript
bootstrap daterangepicker汉化以及扩展功能
Jun 15 Javascript
详解js几个绕不开的事件兼容写法
Aug 30 Javascript
理解 JavaScript EventEmitter
Mar 29 Javascript
vue 路由守卫(导航守卫)及其具体使用
Feb 25 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
Aug 14 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
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
php 类自动载入的方法
2015/06/03 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
IE中createElement需要注意的一个问题
2010/07/13 Javascript
js 高效去除数组重复元素示例代码
2013/12/19 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
js实现弹窗效果
2020/08/09 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
Python开发常用的一些开源Package分享
2015/02/14 Python
Python计算三角函数之asin()方法的使用
2015/05/15 Python
使用python实现接口的方法
2017/07/07 Python
python:print格式化输出到文件的实例
2018/05/14 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
医学护理系毕业生求职信
2013/10/01 职场文书
党校自我鉴定范文
2013/10/02 职场文书
海飞丝的广告词
2014/03/20 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
临床护理求职信
2014/04/26 职场文书
四风自我剖析材料
2014/09/30 职场文书
小学运动会前导词
2015/07/20 职场文书
幼儿园教师教学反思
2016/03/02 职场文书