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 26 Javascript
动态添加option及createElement使用示例
Jan 26 Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 Javascript
三分钟带你玩转jQuery.noConflict()
Feb 15 Javascript
javascript中对Date类型的常用操作小结
May 19 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
Jun 03 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
Apr 21 Javascript
JS实现简单拖拽效果
Jun 21 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
Jun 27 Javascript
使用vue实现grid-layout功能实例代码
Jan 05 Javascript
原生js实现省市区三级联动代码分享
Feb 12 Javascript
JavaScript TAB栏切换效果的示例
Nov 05 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
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
jquery中EasyUI实现同步树
2015/03/01 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
vue中使用腾讯云Im的示例
2020/10/23 Javascript
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
分公司经理岗位职责
2013/11/11 职场文书
客服主管岗位职责
2013/12/13 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
气象学专业个人求职信
2014/03/15 职场文书
安全承诺书范文
2014/03/26 职场文书
幼儿园六一亲子活动方案
2014/08/26 职场文书
省委召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
博士生专家推荐信
2015/03/25 职场文书
基于python实现银行管理系统
2021/04/20 Python