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 相关文章推荐
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
Oct 23 Javascript
JavaScript 创建运动框架的实现代码
May 08 Javascript
jquery移除、绑定、触发元素事件使用示例详解
Apr 10 Javascript
node.js入门教程
Jun 01 Javascript
js与css实现弹出层覆盖整个页面的方法
Dec 13 Javascript
Bootstrap的图片轮播示例代码
Aug 31 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
May 23 Javascript
ligerUI---ListBox(列表框可移动的实例)
Nov 28 Javascript
angular6.0开发教程之如何安装angular6.0框架
Jun 29 Javascript
JavaScript HTML DOM元素 节点操作汇总
Jul 29 Javascript
使用PreloadJS加载图片资源的基础方法详解
Feb 03 Javascript
微信小程序以ssm做后台开发的实现示例
Apr 08 Javascript
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
中东人咖啡哲学
2021/03/03 咖啡文化
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
php仿微信红包分配算法的实现方法
2016/05/13 PHP
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
vue 项目如何引入微信sdk接口的方法
2017/12/18 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
Vue实现日历小插件
2019/06/26 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
Python使用贪婪算法解决问题
2019/10/22 Python
tensorflow 环境变量设置方式
2020/02/06 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
PHP开发工程师面试问题集锦
2012/11/01 面试题
高中生期末评语
2014/01/28 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
美食节目策划方案
2014/05/31 职场文书
2014年生活老师工作总结
2014/12/23 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
会计稽核岗位职责
2015/04/13 职场文书
社区党员干部承诺书
2015/05/04 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
SQL Server Agent 服务无法启动
2022/04/20 SQL Server