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 相关文章推荐
javascript实现划词标记+划词搜索功能
Mar 06 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
Jan 15 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
Nov 28 Javascript
javascript 事件处理示例分享
Dec 31 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
javascript 常见功能汇总
Jun 11 Javascript
AngularJS控制器继承自另一控制器
May 09 Javascript
从零开始封装自己的自定义Vue组件
Oct 09 Javascript
使用vscode快速建立vue模板过程详解
Oct 10 Javascript
javascript实现异形滚动轮播
Nov 28 Javascript
Javascript中的this,bind和that使用实例
Dec 05 Javascript
Vue过滤器(filter)实现及应用场景详解
Jun 15 Vue.js
利用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
图形数字验证代码
2006/10/09 PHP
PHP与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
javascript new 需不需要继续使用
2009/07/02 Javascript
javascript 面向对象思想 附源码
2009/07/07 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
Python 的内置字符串方法小结
2016/03/15 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
python绘制热力图heatmap
2020/03/23 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
Python grpc超时机制代码示例
2020/09/14 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
戴尔新加坡官网:Dell Singapore
2020/12/13 全球购物
年度考核自我鉴定
2013/11/09 职场文书
毕业生怎样写好自荐信
2013/11/11 职场文书
企业统计员岗位职责
2013/12/13 职场文书
幼儿园毕业家长感言
2014/02/10 职场文书
供货协议书范本
2014/04/22 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书
详解Go语言中Get/Post请求测试
2022/06/01 Golang