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 相关文章推荐
jquery的flexigrid无法显示数据提示获取到数据
Jul 19 Javascript
JQuery中ajax方法访问web服务实例
Jul 18 Javascript
jQuery如何封装输入框插件
Aug 19 Javascript
bootstrap 模态框(modal)实现水平垂直居中显示
Jan 23 Javascript
bootstrap multiselect 多选功能实现方法
Jun 05 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
Oct 11 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
Nov 27 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
Apr 23 Javascript
解决layer弹出层中表单不起作用的问题
Sep 09 Javascript
three.js利用射线Raycaster进行碰撞检测
Mar 12 Javascript
原生js生成图片验证码
Oct 11 Javascript
vue配置型表格基于el-table拓展之table-plus组件
Apr 12 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
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
广告显示判断
2006/08/31 Javascript
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
一个JavaScript获取元素当前高度的实例
2014/10/29 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
浅析javascript函数表达式
2016/02/10 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
详解python配置虚拟环境
2019/04/08 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
关于Django Models CharField 参数说明
2020/03/31 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
芝加哥牛排公司:Chicago Steak Company
2018/10/31 全球购物
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
文秘专业自荐信
2013/10/14 职场文书
会计系毕业生求职信
2014/05/28 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python