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 相关文章推荐
Ctrl+Enter提交内容信息
Jun 26 Javascript
javascript 二进制运算技巧解析
Nov 27 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
Jan 24 Javascript
jQuery实现下拉框左右选择的简单实例
Feb 22 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
Jan 19 Javascript
莱鸟介绍window.print()方法
Jan 06 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
Jun 25 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
May 17 Javascript
浅谈Vuejs Prop基本用法
Aug 17 Javascript
js实现的格式化数字和金额功能简单示例
Jul 30 Javascript
JS如何定义用字符串拼接的变量
Jul 11 Javascript
JavaScript常用工具函数库汇总
Sep 17 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
无限级别菜单的实现
2006/10/09 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
2015/12/08 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
2017/05/07 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
js注册时输入合法性验证方法
2017/10/21 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
Django代码性能优化与Pycharm Profile使用详解
2018/08/26 Python
如何使用repr调试python程序
2020/02/28 Python
Python telnet登陆功能实现代码
2020/04/16 Python
Python Django搭建网站流程图解
2020/06/13 Python
PyTorch-GPU加速实例
2020/06/23 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
公司法人授权委托书范本
2014/09/12 职场文书
客户付款通知书
2015/04/23 职场文书
十二生肖观后感
2015/06/12 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android