http://qurtyy.blog.163.com/blog/static/5744368120130221419244/
我们先来看它的思路:把控制不透明度和控向上移动的动画分别存储在两个队列中,控制向上移动的队列按默认情况进行(在2000毫秒内完成),而不透明度的控制在1000毫秒内执行,但这个队列要晚于默认队列1000毫秒执行
再简单一点,就是:前1000毫秒,只有控制高度的“fx”队列执行,而后1000毫秒,控制不透明度的“fader”队列和控制高度的“fx”并行
首先准备两个队列,
一个是默认的"fx",存储高度变化动画:
.animate({top: "-=40"}, {duration: 2000}) |
用来另一个是自定义的"fader"的队列,来存储不透明度变化的动画:
.animate({opacity: 0}, {duration: 1000, queue: false}); |
注意上面这段代码中的"queue:false",这是很关键的一句话,目的是让这个animate不进入默认的"fx"队列中
任何的动画效果都会进入"fx"队列中,即使你定义在.queue()中的动画也是一样,并且动画效果,务必会按顺序执行,比如说下面这段代码:
$('#object').slideUp(1000)<br> .slideDown(1000)<br> .animate({width: '50px'}, {duration: 1000}); |
运行后它只会按照顺序来执行,先收起,再放下,再把宽度收缩为50px
但是一旦我加入了"queue:false"这个参数:
$('#section3a').slideUp(1000) .slideDown(1000) .animate({width: '50px'}, {duration: 1000, queue: false}); |
你会发现在收缩放下的同时,object的宽度也在收缩
本来线性执行的slideUp,slideDown,animate,变成了animate和slideUp,slideDown并行:
运行结果如下
本例完整代码:
OK,我们回过头来再看实战中的这个例子:
$("#object").delay(1000, "fader").queue("fader", function(next) { $(this).animate({opacity: 0}, {duration: 1000, queue: false}); next();}).dequeue("fader").animate({top: "-=40"}, {duration: 2000}) |
其实前三个语句(这里所说的语句以"."为区分标志),做了这么几件事:
定义一个名为fader的队列,专用于控制不透明度的改变——.queue()语句
让它1000毫秒后执行——.delay()延时函数,延时fader队列的执行时间;.dequeue执行fader队列。
而最后的.animate则是默认进行的,不用管它。一起来看看效果,左边的是正确的,右边的是错误的(可能在IE6中有布局错位的情况,因为是jQuery例子,时间有限,也就不追究css的错误了吧……):
本例完整代码:
好的,queue的主要功能就介绍到这里,下面还有点时间,介绍一些非主流功能:
获取队列长度
比如用队列名取得匹配元素的长度:
var $queue=$("div").queue('fx'); |
很明显,就是取得队列名为'fx'的队列,如果想取得长度的话:
var $length=$('div').queue('fx').length; |
注意这里的队列长度只是匹配元素还未运行的队列长度,当动画运行完之后,队列长度会自动归为0,举下面一个例子:
function animateT(){ $("#section2-div").slideToggle('3000') .slideToggle('3000') .hide('3000') .show('3000') .animate({left:'+=200'},2000) .hide('3000') .show('3000') .animate({left:'-=200'},2000,animateT);//在这轮动画结束的时候再调用自己,使动画无限循环下去 } |
然后当点击按钮的时候显示队列的长度:
$("#section2-input").click(function(){ var $queue=$("#section2-div").queue('fx'); $('#section2-h1').text($queue.length);}); |
效果:
0
点击按钮就可以看见实时队列的长度
本例源码:
替换队列
queue还有一种用法是替换队列,就是自定义一个队列后,用自定义的队列替换元素原匹配的队列:
比如你给某个元素定义了两个队列:
$('div').queue('fx',function(){ $('div').slideDown('slow') .slideUp('slow') .animate({left:'+=100'},4000);});//定义fx$('div').queue('fx2',function(){ $('div').slideDown('fast') .slideUp('fast') .animate({left:'+=100'},1000);});//定义fx2 |
这里定义了两个队列,一个是慢队列,也就是默认的'fx',另一个是快队列'fx2'
当点击某个按钮时:
$('input').click(function(){ $('div').queue('fx',fx2);}); |
很简单吧,明显用fx2替换了fx,当然这也不是立即替换,如果fx还没有执行完的话。除非你用stop()函数(我们下节课介绍)。
总结
OK,今天对queue 的讲解就到这里,肯定有很多疏漏的地方,希望大家多多指证,上面的这些用法是我总结出来,应该算是比较主流的用法吧。如果还有一些我没有提到,或是有什么问题想交流,都可以留言给我。
参考的资料有jQuery官方文档说明 ,Cameron McKay的博客,《犀利开发jQuery》
下节课我打算向大家介绍stop()函数,也是我栽过跟头的地方。
http://qurtyy.blog.163.com/blog/static/5744368120130221419244/的更多相关文章
- http://love3400wind.blog.163.com/blog/static/7963080120132794359703/
http://love3400wind.blog.163.com/blog/static/7963080120132794359703/
- 组合,关联,聚合的区别(转自http://jimmyleeee.blog.163.com/blog/static/9309618200932014422932/)
类间关系 在类图中,除了需要描述单独的类的名称.属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义.在UML类图中,关系用类框之间的连 ...
- GRIB格式转换心得(转自博客:http://windforestwing.blog.163.com/blog/static/19545412007103084743804/)
1.wgrib的使用 在cmd命令行下键入wgrib后即可察看wgrib相关命令参数,简要介绍如下: l Inventory/diagnostic–output selections 详 ...
- blender_(uv应用)................http://digitalman.blog.163.com/blog/static/23874605620174172058299/
轻松学习Blender基础入门之九:UV-1 2017-06-21 14:24:49| 分类: Blender |举报 |字号 订阅 下载LOFTER 我的照片书 | [前言] ...
- node.js(API解读) - process (http://snoopyxdy.blog.163.com/blog/static/60117440201192841649337/)
node.js(API解读) - process 2011-10-28 17:05:34| 分类: node | 标签:nodejs nodejsprocess node.jsprocess ...
- 转发真阿当老师的一片文章 受益匪浅 (出处:http://cly84920.blog.163.com/blog/static/24750013320158203575958/)
忽悠程序员做一辈子程序员,以白胡子白头发hacker为目标的人有两种: 1,自己不写程序,但需要有将才为自己打下手的人,这种人往往看他资质和勤奋均平平,却成了你领导.别不服,这种人虽不见得有帅才的能力 ...
- 二叉树——根据遍历结果,画出对应的二叉树 转载至:http://canlynet.blog.163.com/blog/static/255013652009112602449178/
这道题目很经典,具体如下: 已知遍历结果如下,试画出对应的二叉树: 前序:A B C E H F I J D G K 中序:A H E C I F J B D K G 解题要点: 1.前序.中序.后序 ...
- http://blog.163.com/zhangmihuo_2007/blog/static/27011075201392685751232/
http://blog.163.com/zhangmihuo_2007/blog/static/27011075201392685751232/
- http://blog.163.com/eugeneheen_chen@126/blog/static/120812157201291994916866/
http://blog.163.com/eugeneheen_chen@126/blog/static/120812157201291994916866/
随机推荐
- 缓存数据库-redis(订阅发布)
一:Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 c ...
- python基础--shutil模块
shutil模块提供了大量的文件的高级操作. 特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作.对单个文件的操作也可参见os模块. 注意 即便是更高级别的文件复制函数(shutil.cop ...
- FZU 1901 Period II(KMP循环节+公共前后缀)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1901 题目大意:题目大意求出所有p满足s[i]=s[i+p](i<=len-p) 解题思路: 其实就是要 ...
- Es官方文档整理-2.分片内部原理
Es官方文档整理-2.分片内部原理 1.集群 一个运行的Elasticsearch实例被称为一个节点,而集群是有一个或多个拥有相同claster.name配置的节点组成,他们共同承担数据和负 ...
- bzoj 4034(DFS序+线段树)
这个题多了一个操作难度直线上升,看完题解才会写 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a .操作 2 :把某个节点 ...
- Atom编辑器试用(Win7)
看到Atom的官网(https://atom.io/)上说,Atom是A hackable text editor for the 21st Century,是一个基于V8引擎的editor,于是决 ...
- hdu 5122 (2014北京现场赛 K题)
把一个序列按从小到大排序 要执行多少次操作 只需要从右往左统计,并且不断更新最小值,若当前数为最小值,则将最小值更新为当前数,否则sum+1 Sample Input255 4 3 2 155 1 2 ...
- Hive(二)CentOS7.5安装Hive2.3.3
一 Hive的下载 软件下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/ 这里下载的版本是:apache-hive-2.3.3-bin.t ...
- 基于Bootstrap的Asp.net Mvc 分页的实现
最近写了一个mvc 的 分页,样式是基于 bootstrap 的 ,提供查询条件,不过可以自己写样式根据个人的喜好,以此分享一下.首先新建一个Mvc 项目,既然是分页就需要一些数据,我这边是模拟了一些 ...
- git推送本地仓库到github
总结一下,方便后人,也方便自己查阅.直接写步骤 一.本地创建一个文件夹,在里面写项目的文件(* .php/*.js.....). git本地操作: 1 . cd /path/to/project ...