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 相关文章推荐
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
Mar 04 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
May 13 Javascript
JavaScript之appendChild、insertBefore和insertAfter使用说明
Dec 30 Javascript
JSON.stringify 语法实例讲解
Mar 14 Javascript
查看图片(前进后退)功能实现js代码
Apr 24 Javascript
IE中getElementsByName()对有些元素无效的解决方案
Sep 28 Javascript
三种Node.js写文件的方式
Mar 08 Javascript
原生js实现电商侧边导航效果
Jan 19 Javascript
JavaScript实现各种排序的代码详解
Aug 28 Javascript
vue-cli构建vue项目的步骤详解
Jan 27 Javascript
JavaScript Array对象使用方法解析
Sep 24 Javascript
JavaScript onclick事件使用方法详解
May 15 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开发需要注意的安全问题
2010/09/01 PHP
php代码运行时间查看类代码分享
2011/08/06 PHP
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
JavaScript 注册事件代码
2011/01/27 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
angular.bind使用心得
2015/10/26 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
2016/02/20 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
jQuery解析json格式数据示例
2018/09/01 jQuery
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
python自动化报告的输出用例详解
2018/05/30 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
python 将Excel转Word的示例
2021/03/02 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
大学同学聚会邀请函
2014/01/29 职场文书
运动会跳远广播稿
2014/02/04 职场文书
环保标语大全
2014/06/12 职场文书
悬空寺导游词
2015/02/05 职场文书
求职意向书范本
2015/05/11 职场文书
学生会招新宣传语
2015/07/13 职场文书
婚礼父母致辞
2015/07/28 职场文书