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 相关文章推荐
判断是否输入完毕再激活提交按钮
Jun 26 Javascript
Safari5中alert的无限循环BUG
Apr 07 Javascript
Jquery实现仿腾讯微博发表广播
Nov 17 Javascript
JavaScript中的console.assert()函数介绍
Dec 29 Javascript
Jquery实现简单的轮播效果(代码管用)
Mar 14 Javascript
解析js如何获取css样式
Dec 11 Javascript
require.js中的define函数详解
Jul 10 Javascript
JS中Attr的用法详解
Oct 09 Javascript
JavaScript中 ES6变量的结构赋值
Jul 10 Javascript
原生JS实现自定义下拉单选选择框功能
Oct 12 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
Apr 10 Javascript
layui 对table中的数据进行转义的实例
Sep 12 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
Apache中php.ini的设置方法
2013/02/28 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
destoon数据库表说明汇总
2014/07/15 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
JS实现拖拽元素时与另一元素碰撞检测
2020/08/27 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
vue实现防抖的实例代码
2021/01/11 Vue.js
[02:34]DOTA2英雄基础教程 幽鬼
2014/01/02 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
python中的闭包用法实例详解
2015/05/05 Python
Python中的集合类型知识讲解
2015/08/19 Python
Python找出9个连续的空闲端口
2016/02/01 Python
Python中format()格式输出全解
2019/04/12 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
python语言中有算法吗
2020/06/16 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
文秘档案管理岗位职责
2014/03/06 职场文书
表决心的诗句大全
2014/03/11 职场文书
初一学生期末评语
2014/04/24 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
法院信息化建设方案
2014/05/21 职场文书
优秀共青团员事迹材料
2014/12/25 职场文书
爱情保证书
2015/01/17 职场文书
研究生给导师的自荐信
2015/03/06 职场文书
三八节祝酒词
2015/08/11 职场文书
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL