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 DOM 学习第三章 内容表格
Feb 19 Javascript
js取滚动条的尺寸的函数代码
Nov 30 Javascript
jquery中prop()方法和attr()方法的区别浅析
Sep 06 Javascript
$.get获取一个文件的内容示例代码
Sep 11 Javascript
js 事件截取enter按键页面提交事件示例代码
Mar 04 Javascript
JS将光标聚焦在文本最后的实现代码
Mar 28 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
Apr 23 Javascript
最全的JavaScript开发工具列表 总有一款适合你
Jun 29 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
Aug 03 Javascript
Vue组件实例间的直接访问实现代码
Aug 20 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
Apr 28 Javascript
在vue中使用防抖函数组件操作
Jul 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
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
20个PHP常用类库小结
2011/09/11 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
Linux安装配置php环境的方法
2016/01/14 PHP
Smarty模板常见的简单应用分析
2016/11/15 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
&amp;lt;script defer&amp;gt; defer 是什么意思
2009/05/10 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
2017/01/19 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
关于foreach循环中遇到的问题小结
2017/05/08 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
微信小程序使用 vant Dialog组件的正确方式
2020/02/21 Javascript
Python单例模式的两种实现方法
2017/08/14 Python
python2与python3共存问题的解决方法
2018/09/18 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
解决Python对齐文本字符串问题
2019/08/28 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
Python中Selenium模块的使用详解
2020/10/09 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
自荐信写法介绍
2014/01/25 职场文书
安全协议书范本
2014/04/21 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
公司管理制度范本
2015/08/03 职场文书
python Polars库的使用简介
2021/04/21 Python
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL