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 相关文章推荐
utf-8编码引起js输出中文乱码的解决办法
Jun 23 Javascript
javascript 闭包
Sep 15 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
Mar 08 Javascript
动态加载dtree.js树treeview(示例代码)
Dec 17 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
Feb 25 Javascript
jQuery实现图片加载完成后改变图片大小的方法
Mar 29 Javascript
Node.js中常规的文件操作总结
Oct 13 Javascript
浅谈ECMAScript6新特性之let、const
Aug 02 Javascript
js实现图片上传并预览功能
Aug 06 Javascript
vue2.0 + ele的循环表单及验证字段方法
Sep 18 Javascript
Vue.js特性Scoped Slots的浅析
Feb 20 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
Jun 24 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
Windows7下PHP开发环境安装配置图文方法
2010/05/20 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
2012/03/11 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
学习ExtJS table布局
2009/10/08 Javascript
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
Python解析json文件相关知识学习
2016/03/01 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
2020/06/18 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
公司前台辞职报告
2014/01/19 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
化学教学随笔感言
2014/02/19 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
2014年中秋节活动总结
2014/08/29 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫