jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果


Posted in Javascript onAugust 24, 2012

主要的变化点有:把‘下一条'、‘上一条'的click事件抽象到一个函数showNext中。添加setInterval,添加selector元素的hover事件。好了,我们一个个的看。
showNext函数:

//显示函数 
function showNext(flag) { 
//隐藏导航 
$(config.selector).find('a').css('display', 'none'); 
//创建遮罩 
$.tranzify.createOverlay(config); //获取当前显示状态的图片 
var currImg = $('.' + config.visibleClass, $(config.selector)); 
if (flag === true) { 
//当前图片不是第一张图片 
if (currImg.prev().filter('img').length > 0) { 
//将上一张图片设置为可显示状态 
currImg.removeClass(config.visibleClass).prev().addClass(config.visibleClass); 
} else { 
//设置最后一张图片为可显示状态 
currImg.removeClass(config.visibleClass); 
$(config.selector).find('img').eq(imgLength - 1).addClass(config.visibleClass); 
} 
} else { 
//当前图片不是最后一张图片 
if (currImg.next().filter('img').length > 0) { 
//将下一张图片设置为可显示状态 
currImg.removeClass(config.visibleClass).next().addClass(config.visibleClass); 
} else { 
//设置第一张图片为可显示状态 
currImg.removeClass(config.visibleClass); 
$(config.selector).find('img').eq(0).addClass(config.visibleClass); 
} 
} 
//运行遮罩效果 
$.tranzify.runTransition(config); 
}

之所以要把他抽出来,是因为下面的setInterval里面也要用到它,不想有太多重复的代码,所以又必要抽出来,这样统一管理。接下来我们来看setIntervale。
//设置循环函数 
config.interval = setInterval(showNext, (config.multi * 150) + 3000);

其实就是添加一个循环函数,每个多少秒,运行一次showNext函数,显示下一张图片。这里要注意的一点是间隔时间的计算。还记得上一章中runTransition函数中给animate对象设置的间隔时间吗?横向显示设置为slow,也就是600毫秒。每一帧竖向显示设置的时间是150毫秒,一共有config.multi帧。(config.multi * 150)肯定大于600,所以我们这里就取(config.multi * 150)作为时间标准。为了防止动画刚运行完,就接着显示下一张图片,我们加了额外的3秒钟时间。

添加完循环函数后,我们为selector对象添加hover事件,当鼠标移动到对象上时,移出interval,鼠标移出时添加interval。

//鼠标移动到对象上,移出循环函数;鼠标移出,添加循环函数 
$(config.selector).hover(function () { 
clearInterval(config.interval); 
}, function () { 

config.interval = setInterval(showNext, (config.multi * 150) + 3000); 
});

这里我们要注意的是,我们把setInterval创造的对象传给了config.interval。这样做事为了保证上一步中创建的循环函数,删除的循环函数和删除的循环函数是同一个对象。很忌讳把setInterval创建的对象直接传给没有声明的interval,像这样:
interval = setInterval(showNext, (config.multi * 150) + 3000);

这样操作时把他传给了window对象的interval,很容易引起代码冲突。比如如果别的代码或者插件里面,也创建了一个setInterval对象,也同样传给了interval(等同于window.interval),那我们插件的clearInterval就会影响到别人代码的正常运行,同理别人的代码也会影响到我们。

最后为了代码的健壮性,我们给createOverlay添加了下面的代码,保证同时只有一个遮罩层:

//判断是否有没有运行完的补间动画,存在则立即结束动画,移出对象 
var transOverlay = $('#' + config.containerID); 
if (transOverlay) { 
transOverlay.stop(true, true); 

transOverlay.remove(); 
}

好了,需要讲解的对象都讲完了,大家还是直接下demo看效果吧。
demo下载地址:jQuery.animation.tranzify_improve.js
Javascript 相关文章推荐
jQuery中校验时间格式的正则表达式小结
Sep 22 Javascript
jquery.validate的使用说明介绍
Nov 12 Javascript
深入理解js函数的作用域与this指向
May 28 Javascript
js常用的继承--组合式继承
Mar 06 Javascript
在js中做数字字符串补0(js补零)
Mar 25 Javascript
Javascript创建类和对象详解
May 31 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
关于angularJs清除浏览器缓存的方法
Nov 28 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
Aug 13 Javascript
vue+axios实现post文件下载
Sep 25 Javascript
js实现图片跟随鼠标移动效果
Oct 16 Javascript
JQuery常用简单动画操作方法回顾与总结
Dec 07 jQuery
jquery动画3.创建一个带遮罩效果的图片走廊
Aug 24 #Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
Aug 24 #Javascript
jquery动画1.加载指示器
Aug 24 #Javascript
基于jquery的bankInput银行卡账号格式化
Aug 22 #Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
Aug 22 #Javascript
js选取多个或单个元素的实现代码(用class)
Aug 22 #Javascript
javascript动态加载三
Aug 22 #Javascript
You might like
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
东方红 - 来复式再生机的修复
2021/03/02 无线电
PHP 第一节 php简介
2012/04/28 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
php利用事务处理转账问题
2015/04/22 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
解决Window10系统下Node安装报错的问题分析
2016/12/13 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
详解Js中的模块化是如何实现的
2017/10/18 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
Python使用minidom读写xml的方法
2015/06/03 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
2019/06/17 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
教学评估实施方案
2014/03/16 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python
mysql中整数数据类型tinyint详解
2021/12/06 MySQL