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 (八) 插播:jQuery实施方案
Feb 23 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 Javascript
jQuery中用dom操作替代正则表达式
Dec 29 Javascript
js实现点击图片改变页面背景图的方法
Feb 28 Javascript
基于jQuery实现的菜单切换效果
Oct 16 Javascript
javascript中json基础知识详解
Jan 19 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
Feb 20 Javascript
Angular实现购物车计算示例代码
Feb 21 Javascript
Vue 中mixin 的用法详解
Apr 23 Javascript
从组件封装看Vue的作用域插槽的实现
Feb 12 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
Feb 22 Javascript
原生js实现贪吃蛇游戏
Oct 26 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
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
第十四节--命名空间
2006/11/16 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
2016/06/15 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
js几个不错的函数 $$()
2006/10/09 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
2014/12/19 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
JS图片预加载插件详解
2017/06/21 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
Vue+Element-U实现分页显示效果
2020/11/15 Javascript
token 机制和实现方式
2020/12/15 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
用实例说明python的*args和**kwargs用法
2013/11/01 Python
python中实现延时回调普通函数示例代码
2017/09/08 Python
python实现简单中文词频统计示例
2017/11/08 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
CSS3实现的文本3D效果附图
2014/09/03 HTML / CSS
iframe跨域的几种常用方法
2019/11/11 HTML / CSS
材料采购员岗位职责
2013/12/17 职场文书
大学生个人简历中的自我评价
2013/12/27 职场文书
幼儿园小班植树节活动方案
2014/03/04 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
2014年教育工作总结
2014/11/26 职场文书
物业公司管理制度
2015/08/05 职场文书