jQuery 动画与停止动画效果实例详解


Posted in jQuery onMay 19, 2020

本文实例讲述了jQuery 动画与停止动画效果。分享给大家供大家参考,具体如下:

jQuery 动画 - animate() 方法

jQuery animate() 方法用于创建自定义动画。

语法:

$(selector).animate({params},speed,callback);
  • 必需的 params 参数定义形成动画的 CSS 属性。
  • 可选的 speed 参数规定效果的时长。它可以取以下值:"slow"、"fast" 或毫秒。
  • 可选的 callback 参数是动画完成后所执行的函数名称。

下面的例子演示 animate() 方法的简单应用。它把 <div> 元素往右边移动了 250 像素:

$("button").click(function(){
 $("div").animate({left:'250px'});
});

jQuery animate() - 操作多个属性

请注意,生成动画的过程中可同时使用多个属性:

$("button").click(function(){
 $("div").animate({
  left:'250px',
  opacity:'0.5',
  height:'150px',
  width:'150px'
 });
});

lamp  可以用 animate() 方法来操作所有 CSS 属性吗?
 
是的,几乎可以!不过,需要记住一件重要的事情:当使用 animate() 时,必须使用 Camel 标记法书写所有的属性名,比如,必须使用 paddingLeft 而不是 padding-left,使用 marginRight 而不是 margin-right,等等。
 
同时,色彩动画并不包含在核心 jQuery 库中。
 
如果需要生成颜色动画,您需要从 jquery.com 下载 颜色动画 插件。

jQuery animate() - 使用相对值

也可以定义相对值(该值相对于元素的当前值)。需要在值的前面加上 += 或 -=:

$("button").click(function(){
 $("div").animate({
  left:'250px',
  height:'+=150px',
  width:'+=150px'
 });
});

jQuery animate() - 使用预定义的值

甚至可以把属性的动画值设置为 "show"、"hide" 或 "toggle":

$("button").click(function(){
 $("div").animate({
  height:'toggle'
 });
});

jQuery animate() - 使用队列功能

默认地,jQuery 提供针对动画的队列功能。

这意味着如果在彼此之后编写多个 animate() 调用,jQuery 会创建包含这些方法调用的"内部"队列。然后逐一运行这些 animate 调用。

$("button").click(function(){
 var div=$("div");
 div.animate({height:'300px',opacity:'0.4'},"slow");
 div.animate({width:'300px',opacity:'0.8'},"slow");
 div.animate({height:'100px',opacity:'0.4'},"slow");
 div.animate({width:'100px',opacity:'0.8'},"slow");
});

下面的例子把 <div> 元素往右边移动了 100 像素,然后增加文本的字号:

$("button").click(function(){
 var div=$("div");
 div.animate({left:'100px'},"slow");
 div.animate({fontSize:'3em'},"slow");
});

jquery中有一个Queue队列的接口,这个模块没有单独拿出来作为一个章节是因为这个是内部专门为动画服务的,Queue队列如同data数据缓存与Deferred异步模型一样,都是jQuery库的内部实现的基础设施

Queue队列

队列是一种特殊的线性表,只允许在表的前端(队头)进行删除操作(出队),在表的后端(队尾)进行出入操作(入队),队列的特点是先进先出,最先插入的元素最先被删除。

为什么要引入队列

var a = 1;
setTimeout(function(){
a=2;
},0)
alert(a);

我们一直习惯于线性的编写代码逻辑,但是在JavaScript编程几乎总是伴随着异步操作:

setTImeout,css3Transition/Animation,ajax,dom的绘制,postmessage,web Database 等等,大量异步操作所带来的回调函数会把我们的算法分解,对于“异步+回调”的模式,怎么“拉平”异步操作使之跟同步一样,因为异步操作进行流程控制的时候无非避免的要嵌套大量的回调逻辑,所以就会出现 promises 约定了。

那么 jQuery 引入队列其实从一个角度上可以认为:允许一系列函数被异步地调用而不会阻塞程序。

看一个代码段:

$("#Aaron").slideUp().fadeIn()

这是 jQuery 的一组动画链式序列,它的内部其实就是一组队列 Queue,所以队列和 Deferred 地位类似,是一个内部使用的基础设施。

  • 当 slideUp 运行时,fadeIn 被放到 fx 队列中
  • 当 slideUp 完成后,从队列中被取出运行

Queue 函数允许直接操作这个链式调用的行为,同时 Queue 可以指定队列名称获得其他能力而不局限于 fx 队列。

jQuery 提供了 2 组队列操作的 API:

jQuery.queue/dequeue
jQuery.fn.queue/dequeue

但是不同与普通队列定义的是:

  • jQuery.queue 和 jQuery.fn.queue 不仅执行出队操作返回队头元素,还会自动执行返回的队头元素
  • fn 是扩展在原型上的高级API是提供给实例使用的
  • .queue/.dequeue 其内部是调用的 .queue,.dequeue 静态的底层方法实现入列与出列

jQuery stop() 方法

jQuery stop() 方法用于停止动画或效果,在它们完成之前。

stop() 方法适用于所有 jQuery 效果函数,包括滑动、淡入淡出和自定义动画。

语法:

$(selector).stop(stopAll,goToEnd);
  • 可选的 stopAll 参数规定是否应该清除动画队列。默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行。
  • 可选的 goToEnd 参数规定是否立即完成当前动画。默认是 false。

因此,默认地,stop() 会清除在被选元素上指定的当前动画。

下面的例子演示 stop() 方法,不带参数:

$("#stop").click(function(){
 $("#panel").stop();
});

动画队列停止动画测试,只停止当前正在进行的动画,停止当前动画后,队列中的下一个动画开始进行:

$(document).ready(function(){
 $("#flip").click(function(){
  $("#panel").slideDown(5000);
  $("#panel").slideUp(5000);
 });
 $("#stop").click(function(){
  $("#panel").stop();
 });
});

可以在 stop() 中设置 stopAll 的参数为 true,这样就可以停止所有动画效果而不是只停止当前动画:

$(document).ready(function(){
 $("#flip").click(function(){
  $("#panel").slideDown(5000);
  $("#panel").slideUp(5000);
 });
 $("#stop").click(function(){
  $("#panel").stop(true);
 });
});

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于jQuery相关内容还可查看本站专题:《jQuery动画与特效用法总结》、《jQuery切换特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常用插件及用法总结》、《jQuery拖拽特效与技巧总结》、《jQuery表格(table)操作技巧汇总》、《jQuery常见经典特效汇总》及《jquery选择器用法总结》

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
详谈jQuery.load()和Jsp的include的区别
Apr 12 jQuery
jQuery tip提示插件(实例分享)
Apr 28 jQuery
jquery实现放大镜简洁代码(推荐)
Jun 08 jQuery
全面解析jQuery中的$(window)与$(document)的用法区别
Aug 15 jQuery
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
jQuery+koa2实现简单的Ajax请求的示例
Mar 06 jQuery
jquery获取元素到屏幕四周可视距离的方法
Sep 05 jQuery
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 jQuery
jQuery实现弹幕特效
Nov 29 jQuery
jquery实现烟花效果(面向对象)
Mar 10 jQuery
jQuery 选择方法及$(this)用法实例分析
May 19 #jQuery
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
May 19 #jQuery
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
May 19 #jQuery
jQuery AJAX应用实例总结
May 19 #jQuery
jquery+css3实现的经典弹出层效果示例
May 16 #jQuery
JQuery事件冒泡和默认行为代码实例
May 13 #jQuery
JQuery表单元素取值赋值方法总结
May 12 #jQuery
You might like
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
PHP生成plist数据的方法
2015/06/16 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
php、java、android、ios通用的3des方法(推荐)
2016/09/09 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
jQuery实现可以控制图片旋转角度效果(附demo源码下载)
2016/01/27 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
web打印小结
2017/01/11 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
微信二次分享报错invalid signature问题及解决方法
2019/04/01 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
python 检查数据中是否有缺失值,删除缺失值的方式
2019/12/02 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
python能否java成为主流语言吗
2020/06/22 Python
CSS3自定义滚动条样式的示例代码
2017/08/21 HTML / CSS
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
应届毕业生就业自荐信
2013/10/26 职场文书
文秘人员工作职责
2014/01/31 职场文书
国庆65周年演讲稿:回首往昔,展望未来
2014/09/21 职场文书
入党积极分子个人总结
2015/03/02 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python