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中的事件处理
Jan 16 Javascript
js下写一个事件队列操作函数
Jul 19 Javascript
JavaScript的漂亮的代码片段
Jun 05 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
Aug 12 Javascript
javascript动态判断html元素并执行不同的操作
Jun 16 Javascript
AngularJS基础 ng-keydown 指令简单示例
Aug 02 Javascript
微信小程序 textarea 组件详解及简单实例
Jan 10 Javascript
深入理解Node.js中的进程管理
Mar 13 Javascript
作为老司机使用 React 总结的 11 个经验教训
Apr 08 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
Jul 04 jQuery
vue实现点击隐藏与显示实例分享
Feb 13 Javascript
layui table 多行删除(id获取)的方法
Sep 12 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
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
Laravel下生成验证码的类
2017/11/15 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
javascript 循环读取JSON数据的代码
2010/07/17 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
详解React 元素渲染
2020/07/07 Javascript
vue通过接口直接下载java生成好的Excel表格案例
2020/10/26 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
原生js实现滑块区间组件
2021/01/20 Javascript
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
Python smallseg分词用法实例分析
2015/05/28 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
初中校园之声广播稿
2014/01/15 职场文书
大学生校园创业计划书
2014/02/08 职场文书
爱情寄语大全
2014/04/09 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
租车协议书范本2014
2014/11/17 职场文书
以权谋私检举信范文
2015/03/02 职场文书
Win11如何默认打开软件界面最大化?Win11默认打开软件界面最大化的方法
2022/07/15 数码科技