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 相关文章推荐
JScript内置对象Array中元素的删除方法
Mar 08 Javascript
JS 各种网页尺寸判断实例方法
Apr 18 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
Jul 15 Javascript
js模仿hover的具体实现代码
Dec 30 Javascript
window.print打印指定div指定网页指定区域的方法
Aug 04 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
Aug 16 Javascript
Javascript 5种方法实现过滤删除前后所有空格
Jun 22 Javascript
React学习笔记之条件渲染(一)
Jul 02 Javascript
基于LayUI实现前端分页功能的方法
Jul 22 Javascript
element ui 对话框el-dialog关闭事件详解
Feb 26 Javascript
Vue.js实现数据响应的方法
Aug 13 Javascript
vue axios请求成功却进入catch的原因分析
Sep 08 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
自动跳转中英文页面
2006/10/09 PHP
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
Javascript 面向对象 继承
2010/05/13 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
angularjs http与后台交互的实现示例
2018/12/21 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
在Vue中使用HOC模式的实现
2020/08/23 Javascript
python基础教程之匿名函数lambda
2017/01/17 Python
Sanic框架配置操作分析
2018/07/17 Python
python 内置模块详解
2019/01/01 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
python中提高pip install速度
2020/02/14 Python
如何理解python中数字列表
2020/05/29 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
党员的自我评价范文
2014/01/02 职场文书
英文留学推荐信范文
2014/01/25 职场文书
石油大学毕业生自荐信
2014/01/28 职场文书
法人授权委托书格式
2014/04/08 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers