全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解jQuery停止动画——stop()方法的使用

很多时候需要停止匹配元素正在进行的动画,比如,当鼠标选入元素时显示菜单,鼠标离开时隐藏下拉菜单,如果鼠标移入移出过快的话就会导致动画效果与鼠标的动作不一致的情况,此时stop()就派上用场了。

stop()方法的语法结构为:

stop([clearQueue],[gotoEnd]);

 参数clearQueue和gotoEnd都是可选参数,为Boolean值(true或false)。clearQueue代表是否清空未执行完的动画队列,gotoEnd代表是否直接将正在执行的动画跳转到末状态。

(1)直接使用使用stop()方法,则会立即停止当前正在进行的动画,如果接下来还有动画等待继续进行,则以当前状态开始接下来的动画。比如下面例子:

 <!-- html部分 -->
 <div id="panel" style="width: 60px;height: 22px;background-color: #eee;">呵呵</div> 
 /* js部分 */
 $("#panel").hover(function() {
  $(this).stop().animate({height: "150"}, 200);
 },function() {
  $(this).stop().animate({height: "22"}, 300);
 });

此时,在光标移入时,触发光标移入动画(在0.2秒内height变为150),在动画还没执行完的时候光标移出,则停止当前动画(可能height还未到达150),执行光标移出触发的动画(在0.3秒内height变回22)。反之亦然。

如果遇到组合动画,例如:

$("#panel").hover(function() {
  $(this).stop()
   .animate({height: "150"}, 200) //如果在此时触发了光标的移出事件
           //将执行下面的动画
   .animate({width: "300"},300); //而非光标移出事件中的动画
 },function() {
  $(this).stop()
   .animate({height: "22"}, 200)
   .animate({width: "60"},300);
 });

此时只用一个不带参数的stop()方法就显得力不从心了。因为stop()方法只会停止正在进行的动画,如果动画正执行在第1阶段(改变height的阶段),则触发光标移出事件后,只会停止当前的动画,并继续进行下面的.animate({width: "300"},300)动画,而光标移出事件中的动画要等这个动画结束后才会继续执行,这显然不是预期的结果。这种情况下stop()方法的第一个参数就发挥作用了。

(2)stop(true),此时程序会把当前元素接下来尚未执行完的动画队列清空。所以可以把上面代码改成如此代码,就能实现预期的效果。

$("#panel").hover(function() {
  $(this).stop(true)
   .animate({height: "150"}, 200) //如果在此时触发了光标的移出事件
           //直接跳过后面的动画队列
   .animate({width: "300"},300); 
 },function() {
  $(this).stop()
   .animate({height: "22"}, 200)
   .animate({width: "60"},300);
 });

(3)第2个参数(gotoEnd)可以用于让正在执行的动画直接到达结束时刻的状态,通常用于后一个动画需要基于前一个动画的末状态的情况,可以通过stop(false,true)这种方式来让当前动画直接到达末状态

(4)两者结合起来stop(true,true),停止当前动画并直接到达当前动画的末状态,并清空动画队列

(5)注意,jQuery只能设置正在执行的动画的最终状态,而没有提供直接到达执行动画队列最终状态的方法。例如有一组动画:

  $("div.content")
  .animate({width: "300"}, 200)
  .animate({height: "150"}, 300)
  .animate({opacity: "0.2"}, 200);

无论怎么设置stop()方法,均无法再改变"width"或者"height"时,将此<div>元素的末状态变成300*150大小,并且设置透明度为0.2。

温馨提示:

jQuery中的动画有show()、hide()、fadeIn()、fadeOut()、slideDown()、slideUp()、animate()等等。stop()方法对上述的动画都适用。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# jquery  # 停止动画  # stop()方法  # JQuery动画和停止动画实例代码  # jQuery动画animate方法使用介绍  # jQuery动画效果animate和scrollTop结合使用实例  # jquery animate 动画效果使用说明  # JQuery动画animate的stop方法使用详解  # jQuery实现切换页面过渡动画效果  # Jquery中使用show()与hide()方法动画显示和隐藏图片  # jQuery动画与特效详解  # 利用jquery制作滚动到指定位置触发动画  # jQuery动画出现连续触发、滞后反复执行的解决方法  # jQuery 动画与停止动画效果实例详解  # 移出  # 鼠标  # 正在进行  # 清空  # 只会  # 都是  # 就会  # 还没  # 第一个  # 就能  # 才会  # 可以通过  # 事件中  # 还未  # 可选  # 会把  # 将此  # 结合起来  # 而非  # 不带 


相关文章: 如何构建满足综合性能需求的优质建站方案?  Python多线程使用规范_线程安全解析【教程】  如何用狗爹虚拟主机快速搭建网站?  制作网页的网站有哪些,电脑上怎么做网页?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  如何在Golang中指定模块版本_使用go.mod控制版本号  代购小票制作网站有哪些,购物小票的简要说明?  建站之星2.7模板快速切换与批量管理功能操作指南  免费视频制作网站,更新又快又好的免费电影网站?  如何在IIS7中新建站点?详细步骤解析  如何将凡科建站内容保存为本地文件?  清除minerd进程的简单方法  如何在云虚拟主机上快速搭建个人网站?  手机网站制作与建设方案,手机网站如何建设?  建站主机空间推荐 高性价比配置与快速部署方案解析  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  制作网站的模板软件,网站怎么建设?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  Python文件管理规范_工程实践说明【指导】  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  建站之星安装后界面空白如何解决?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  教学网站制作软件,学习*后期制作的网站有哪些?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  制作公司内部网站有哪些,内网如何建网站?  建站主机是什么?如何选择适合的建站主机?  如何用花生壳三步快速搭建专属网站?  如何通过商城免费建站系统源码自定义网站主题?  如何在阿里云部署织梦网站?  定制建站是什么?如何实现个性化需求?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何批量查询域名的建站时间记录?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  动图在线制作网站有哪些,滑动动图图集怎么做?  独立制作一个网站多少钱,建立网站需要花多少钱?  如何在景安云服务器上绑定域名并配置虚拟主机?  如何快速选择适合个人网站的云服务器配置?  制作网站的软件免费下载,免费制作app哪个平台好?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  香港服务器建站指南:免备案优势与SEO优化技巧全解析  历史网站制作软件,华为如何找回被删除的网站?  深圳网站制作案例,网页的相关名词有哪些?  韩国服务器如何优化跨境访问实现高效连接?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  建站之星如何快速解决建站难题?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何在阿里云虚拟主机上快速搭建个人网站?  如何用搬瓦工VPS快速搭建个人网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。