利用Jquery队列实现根据输入数量显示的动画


Posted in Javascript onSeptember 01, 2016

先来看看要实现的效果图

利用Jquery队列实现根据输入数量显示的动画

如上面的gif图所示,可以在输入框中,输入要产生的动画的数量,然后点击click me按钮,就产生了效果。产生的效果是通过在数组中预设的几种。这里为了演示方便,没有设置具体的形状,比如可以更换为一些其它的iconfont来实现效果。

实现思路

通过$.queue$.dequeue来实现动画队列的存取与取出实现效果。首先通过按照input输入的数字来形成对应数量效果对象的数组。然后在把数组存放到$.queue中,最后通过click me按钮触发,一个一个取出动画序列,实现动画。

注意

这里要注意的是,在一个一个取出动画的时候,用到了setInterval,不需要的时候一定要清除计时器,否则会影响序列,不停的取出。

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script src="/jquery-2.1.4.min.js" type="text/javascript"></script>
  <style>
    *{
      padding: 0;
      margin: 0;
    }
    .box{
      width: 50px;
      height: 50px;
      border: 1px solid slateblue;
      position: relative;
      left: 750px;
      top: 500px;
    }
    .animate{
      width: 50px;
      height: 50px;
      border: 1px solid skyblue;
      background: slateblue;
      opacity: 0;
      position: absolute;
    }
    .up{
      z-index: 999;
      background: red;
      width: 50px;
      height: 50px;
      border: 1px solid skyblue;

    }
    #btn{
      background: slateblue;
      position: absolute;
      left: 0;
      top: 0;
    }
    .number{
      position: absolute;
      top: 600px;
      left: 740px;
      width: 100px;
      height: 30px;
    }
    #btnTrg{
      background: slateblue;
      width: 100px;
      height: 30px;
      border: 0;
      position: absolute;
      top: 600px;
      left: 600px;
    }
    .result{
      position: absolute;
      top: 600px;
      left: 900px;
      width: 100px;
      height: 30px;
      background: skyblue;
      text-align: center;
    }

  </style>
</head>
<body>
  <div id="content"></div>
  <div class="box">
    <span class="animate1 animate"></span>
    <span class="animate2 animate"></span>
    <span class="animate3 animate"></span>
    <span class="animate4 animate"></span>
    <span class="animate5 animate"></span>
    <span class="animate6 animate"></span>
    <div class="up"></div>
  </div>
  <div id="btn"></div>
  <button id="btnTrg">click me</button>
  <input type="text" class="number" id="num"/>
  <span class="result"></span>
</body>
<script>
  var span1=$(".animate1");
  var span2=$(".animate2");
  var span3=$(".animate3");
  var span4=$(".animate4");
  var span5=$(".animate5");
  var span6=$(".animate6");
  var box=$("#content");
  var btn=$("#btn");
  var btnTrg=$("#btnTrg");
  var input=$("#num");
  var result=$(".result");
  var resultNum=1;
  var ani=[
    function () {
      span1.css({
        background:"red",
        opacity:1
      }).animate({
        left:-300,
        top:-100
      }, function () {
        result.html(resultNum++)
      }).animate({
        left:-50,
        top:-450,
        opacity:0.2
      }, function () {
        $(this).css({
          left:0,
          top:0,
          opacity:0
        })
      })
    },
    function () {
      span2.css({
        background:"blue",
        opacity:1
      }).animate({
        left:-200,
        top:-200
      }, function () {
        result.html(resultNum++)
      }).animate({
        left:-50,
        top:-450,
        opacity:0.2
      }, function () {
        $(this).css({
          left:0,
          top:0,
          opacity:0
        })
      })
    },
    function () {
      span3.css({
        background:"pink",
        opacity:1
      }).animate({
        left:-100,
        top:-300
      }, function () {
        result.html(resultNum++)
      }).animate({
        left:-50,
        top:-450,
        opacity:0.2
      }, function () {
        $(this).css({
          left:0,
          top:0,
          opacity:0
        })
      })
    },
    function () {
      span4.css({
        background:"green",
        opacity:1
      }).animate({
        left:100,
        top:-300
      }, function () {
        result.html(resultNum++)
      }).animate({
        left:50,
        top:-450,
        opacity:0.2
      }, function () {
        $(this).css({
          left:0,
          top:0,
          opacity:0
        })
      })
    },
    function () {
      span5.css({
        background:"orange",
        opacity:1
      }).animate({
        left:200,
        top:-200
      }, function () {
        result.html(resultNum++)
      }).animate({
        left:50,
        top:-450,
        opacity:0.2
      }, function () {
        $(this).css({
          left:0,
          top:0,
          opacity:0
        })
      })
    },
    function () {
      span6.css({
        background:"black",
        opacity:1
      }).animate({
        left:300,
        top:-150
      }, function () {
        result.html(resultNum++)
      }).animate({
        left:50,
        top:-450,
        opacity:0.2
      }, function () {
        $(this).css({
          left:0,
          top:0,
          opacity:0
        })
      })
    }
  ];
  var queue;
  var len=0;
  var flag=0;
  var timer;
  input.on("keyup", function () {
    var result=[];
    var value=input.val();
    len=value;
    if(flag>=len){
      clearInterval(timer);
    }
    if(value<6){
      result =ani.slice(0,value);
      queue=$.queue(box,"animate",result);
    }else if(value>6){
      var num1=Math.floor(value/6);
      var num2=value%6;
      for(var i=0;i<num1;i++){
        result=result.concat(ani);
      }
      result=result.concat(ani.slice(0,num2));
      console.log(result);
      $.queue(box,"animate",result);
    }
  });
  btnTrg.on("click", function () {
    resultNum=0;
    flag=0;
    timer=setInterval(function () {
      flag++;
      console.log(flag);
      $.dequeue(box,"animate");

    },500);
  })
</script>
</html>

总结

以上就是这篇文章的全部内容,感兴趣的朋友们自己运行操作下会更容易理解,如果有疑问可以留言交流,希望这篇文章对大家能有所帮助。

Javascript 相关文章推荐
jQuery EasyUI API 中文文档 - Menu菜单
Oct 03 Javascript
jQuery-Tools-overlay 使用介绍
Jul 14 Javascript
javascript修改IMG标签的src问题
Mar 28 Javascript
jQuery学习笔记之创建DOM元素
Jan 19 Javascript
jQuery+HTML5实现图片上传前预览效果
Aug 20 Javascript
js实现的Easy Tabs选项卡用法实例
Sep 06 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
Nov 04 Javascript
详解AngularJS跨页面传值(ui-router)
Aug 23 Javascript
vue2.0 中使用transition实现动画效果使用心得
Aug 13 Javascript
jQuery实现的简单手风琴效果示例
Aug 29 jQuery
详解JavaScript中操作符和表达式
Sep 12 Javascript
微信小程序实现日历功能
Nov 27 Javascript
JavaScript中子对象访问父对象的方式详解
Sep 01 #Javascript
浅谈JavaScript 数据属性和访问器属性
Sep 01 #Javascript
老生常谈JavaScript 函数表达式
Sep 01 #Javascript
Ubuntu系统下Angularjs开发环境安装
Sep 01 #Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
Sep 01 #Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
Sep 01 #Javascript
深入理解jQuery3.0的domManip函数
Sep 01 #Javascript
You might like
php对数组排序的简单实例
2013/12/25 PHP
yii操作cookie实例简介
2014/07/09 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
jquery-syntax动态语法着色示例代码
2014/05/14 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
nodejs用gulp管理前端文件方法
2018/06/24 NodeJs
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
python执行外部程序的常用方法小结
2015/03/21 Python
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
python数据处理实战(必看篇)
2017/06/11 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
在Python dataframe中出生日期转化为年龄的实现方法
2018/10/20 Python
从0开始的Python学习016异常
2019/04/08 Python
python绘制彩虹图
2019/12/16 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
HTML5学习笔记之History API
2015/02/26 HTML / CSS
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
2015年度电厂个人工作总结
2015/05/13 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python
Golang解析JSON对象
2022/04/30 Golang
Mysql中mvcc各场景理解应用
2022/08/05 MySQL