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 相关文章推荐
非常强大的 jQuery.AsyncBox 弹出对话框插件
Aug 29 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
Feb 12 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
Apr 17 Javascript
一个js过滤空格的小函数
Oct 10 Javascript
浅谈javascript对象模型和function对象
Dec 26 Javascript
AngularJS基础 ng-srcset 指令简单示例
Aug 03 Javascript
快速使用node.js进行web开发详解
Apr 26 Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 jQuery
js技巧之十几行的代码实现vue.watch代码
Jun 09 Javascript
es6 super关键字的理解与应用实例分析
Feb 15 Javascript
JQuery表单元素取值赋值方法总结
May 12 jQuery
利用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获取随机数字和字母的方法详解
2013/06/06 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
php curl 获取https请求的2种方法
2015/04/27 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
2013/08/09 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
python基础教程之实现石头剪刀布游戏示例
2014/02/11 Python
详解Python的Django框架中的templates设置
2015/05/11 Python
在Django中创建动态视图的教程
2015/07/15 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
python多进程实现文件下载传输功能
2018/07/28 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
白色公司:The White Company
2017/10/11 全球购物
Travelstart沙特阿拉伯:廉价航班、豪华酒店和实惠的汽车租赁优惠
2019/04/06 全球购物
体育教育毕业生自荐信
2013/11/21 职场文书
井冈山红色之旅心得体会
2014/10/07 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python