jq动画设置图片抽奖

时间:2022-10-10 10:06:00

(因为自己是前端刚入门的小白所以中间出现很多问题,不过这对于我来说就是一次经验的积累)

预想效果:点击"开始",图片循环旋转,不是同时的效果,而是有一定的时间差.点击"开始"后,按钮变为"停止",点击"停止"图片依次停止显示为中奖号码,当中奖号码的最后一位数显示时,按钮变为"再次",并显示"中奖号码,隐藏中间4位,"再点击"再次",图片归零,按钮变为"开始",然后循环执行.实现多次抽奖效果.最后电话号码显示时中间四位隐藏.

开始:

jq动画设置图片抽奖

停止:

jq动画设置图片抽奖

again:显示"中奖号码"中间4位为星号*

jq动画设置图片抽奖

点击"again"归零:

jq动画设置图片抽奖

css部分

<style type="text/css">
  * {margin: 0;padding: 0;}
  .content {width: 80%;height: 400px;margin: 200px auto;position: relative;}
  .num_box {width: 1486px;position: absolute;left: 23%;top: 5%;margin-left: -403px;z-index: 8;overflow: hidden;border: 1px solid;}
  .num_bg {background: url(images/5.png) top center repeat-y;width: 122px;height: 150px;float: left;margin-right: 12px;}
  .num {background: url(images/num2.png) top center repeat-y;width: 122px;height: 150px;float: left;margin-right: 12px}
  .btn {width: 170px;height: 49px;line-height: 49px;text-align: center;position: absolute;bottom: 36%;right: 51%;cursor: pointer;}
  #start {background: url(images/draw-02.png) no-repeat;}
  #stop {background: url(images/draw-005.png) no-repeat;}
  #again {background: url(images/draw-008.png) no-repeat;}
</style>

html部分

<div class="content"> //内容容器div
  <div class="num_box">//背景图片div
    <div class="num_bg"></div>
    <div class="num_bg"></div>
    <div class="num_bg"></div>
    <div class="num_bg"></div>
    <div class="num_bg"></div>
    <div class="num_bg"></div>
    <div class="num_bg"></div>
    <div class="num_bg"></div>
    <div class="num_bg"></div>
    <div class="num_bg"></div>
    <div class="num_bg"></div>
  </div>
  <div class="num_box">//中奖号码的图片容器,图片作为背景图执行
    <div class="num"></div>
    <div class="num"></div>
    <div class="num"></div>
    <div class="num"></div>
    <div class="num"></div>
    <div class="num"></div>
    <div class="num"></div>
    <div class="num"></div>
    <div class="num"></div>
    <div class="num"></div>
    <div class="num"></div>
  </div>
  <div id="start" class="btn" onclick="start()"></div>//按钮

  <div class="show"></div>//电话号码显示
</div>

js部分

<script type="text/javascript">
    var u = 150;//ImageWidth
    var c = '1 3 3 4 5 6 8 9 0 9 0'//固定的数据
    var btn = $(".btn");
    function start() {
      var Html = btn.attr('id');//获取按钮的当前id名
      if(Html == "start") {
        startRun();//调用函数
        btn.attr('id', 'stop');//修改按钮的id名
      } else if(Html == "stop") {
        stop(c);//调用函数
      } else {
        btn.attr('id', 'start');//修改按钮的id名
      }
    }
   //点击"开始"执行的开始函数
   function startRun() {
    $(".num").each(function(index) {
      var _num1 = $(this);
      _animate(_num1, u * 10 * (index + 1), 10)//传参调用,在编辑器编辑时,将该注释删除,否则会报错
    })

    function _animate(el, backgroundPositionY, speed) {//封装的动画函数,el当前的元素

      el.animate({
        backgroundPositionY: backgroundPositionY//位置
      }, {
        complete: function() { //complete回调函数
        speed: speed,//速度
        el.css({
          backgroundPositionY: 0//元素css样式位置归零
        });
       _animate(el, backgroundPositionY, speed); //自身调用
      }
    }, "liner")
  }
 }

  //点击"停止"
  function stop(custNo) {
    var num_arr = (custNo + ' ').split(' ');//将字符串分割成数组
    $(".num").each(function(index) {
    var _num = $(this);
    setTimeout(function() {
    _num.stop(true,false); //停止动画
    _num.animate({
      backgroundPositionY: (u * 10 * (index + 1)) - (u * num_arr[index])
    }, {
      complete: function() {
        if(index == 10) {
          if(!_num.is(":animated")) {

          $(".show").html(custNo.substring(0,3)+"****"+custNo.substring(8,11));//手机号码中间四位显示为星号
          btn.attr('id', 'again');
            btn.click(function() {
              Again();
            })
          }
        }
      }
    }, 400 * (index + 1));
  }, 800 * index + 1000); //1000 (指定数据依次的出现速度) index + 100(控制点击停止之后,指定数据出现的时间)
  });
 }

  //点击"再次"

  function Again() {
    $(".num").each(function(index) {
    var _num2 = $(this);
    _num2.stop(true, true);
    _num2.animate({
    backgroundPositionY: (u * 10)
    })
   })
  }
</script>

在本次修改中不会的知识点

1.backgroundPositionY :backgroundPositionY 属性设置 background-image 的垂直位置。

语法:Object.style.backgroundPositionY=position

方法一:

function changePosition()
{
  document.body.style.backgroundPositionY="bottom";
}

方法二:

  tank.style.backgroundPositionY="80px";

2.jquery的animate()动画:执行css属性集的自定义动画

http://www.runoob.com/jquery/eff-animate.html 菜鸟教程的动画基本及css属性地址

http://www.jb51.net/article/58919.htm 本文章中用到的动画回调函数地址

将速度,回调函数,队列等都要放到大括号{}中

代码如下:

$("div").animate( {width:"1000px"}, {queue:false, duration:1000,complete:function(){alert("ok")}})

详解:queue参数可以规定动画是否加入动画队列执行,如果进入动画队列,将按照顺序执行,也就是第一个动画执行完成之后,队列中的第二个动画再执行,以此类推。

   如果queue参数值为true就是将动画加入队列执行,否则就是不加入队列。
  duration参数就是定义动画的持续时间。
  complete参数定义动画的回调函数。

    function startRun() {
      $(".num").each(function(index) {
        var _num1 = $(this);
        _animate(_num1, u * 10 * (index + 1), 10)//传参调用,在编辑器编辑时,将该注释删除,否则会报错
      })

      function _animate(el, backgroundPositionY, speed) {//封装的动画函数,el当前的元素

        el.animate({
          backgroundPositionY: backgroundPositionY//位置
        }, {
          complete: function() { //complete回调函数
          speed: speed,//速度
          el.css({
            backgroundPositionY: 0//元素css样式位置归零
          });
         _animate(el, backgroundPositionY, speed); //自身调用
        }
      }, "liner")
    }
   }

stop()方法

stop()在语法上有两个参数,分别都是Boolean布尔值。且都是可选的,但是也有规定,如下:

$(selector).stop(stopAll,goToEnd)

参数:(默认情况下,不写参数,则会被认为两个参数都是false。)

stopAll:可选。规定是否停止被选元素的所有加入队列的动画。意思就是如果该参数值为true,则会停止所有后续动画或事件。如果该参数值为false,则只停止被选元素当前执行的动画,后续动画不受影响。因此,该参数一般都为false。

goToEnd:可选。规定是否允许完成当前动画,该参数只能在设置了stopAll参数时使用。那么goToEnd参数就有两个选择了,一个是false,一个是true。一般都为true。意思就是允许完成当前动画。

jq动画设置图片抽奖的更多相关文章

  1. jq动画设置图片抽奖&lpar;修改效果版&rpar;

    效果:点击开始,图片转动,按钮显示"停止",点击停止,选出中奖号码,,最后一个数字停止时,按钮变为"again",点击"again"开始转动 ...

  2. swift 设置图片动画组 iOS11之前 默认图片 设置不成功

    在iOS 11 上, 1.先执行动画组 在设置图片执行帧动画,2.先设置图片在设置帧动画,执行帧动画  没有任何问题 在iOS 10和iOS9上,必须 执行 方法二(先设置图片在设置帧动画,执行帧动画 ...

  3. PyQt5设置图片格式及动画

    1.缩放图片'''使用QImage.Scale(width,height)方法可以来设置图片'''from PyQt5.QtCore import *from PyQt5.QtGui import * ...

  4. 为你的网页图标(Favicon)添加炫丽的动画和图片

    Favico.js 在让你的网页图标显示徽章,图像或视频.你设置可以轻松地在网页图标中使用动画,可以自定义类型的动画,背景颜色和文字颜色.它支持的动画,像幻灯片,渐变,弹出等等. 您可能感兴趣的相关文 ...

  5. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  6. &lbrack;原创&rsqb;winform&lowbar;PC宴会图片抽奖&sol;文字抽奖

    14年6月 好友结婚 14年4月左右知道他们婚礼由迎宾照抽奖的环节 问我有没有可以用的抽奖软件 我网上找了一会儿,就放弃了,自己做一个更快不是? 14年6月,PC宴会图片抽奖软件成功使用 --- 操作 ...

  7. iOS图案锁&comma;支持动画、图片、绘图

    最近忙着搭建一个聊天用的框架,过几天应该会整理写出来吧,原理不难,但是实现后会省很多事.好久没写博客,周末心血来潮写了个图案锁,这东西没什么技术含量,网上一堆,这次这个图案锁顺便联系了怎么打包使用.a ...

  8. iOS UI-三种简单的动画设置

    一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView beginAnimations:nil context:nil]; //设置动画时长 ...

  9. 基于图像切换器(imageSwitcher)的支持动画的图片浏览器

    利用GridView和ImageSwitcher的基本用法 public class MainActivity extends Activity { int[] imageIds = new int[ ...

随机推荐

  1. yaml官方介绍

    官方网站 http://yaml.org/ 数据结构类型说明 http://yaml.org/type/ YAML Specification http://yaml.org/spec/

  2. Hadoop学习19--推测式执行

    所谓推测式执行,就是计算框架判断,如果有一个task执行的过慢,则会启动备份任务,最终使用原任务+备份任务中执行较快task的结果.产生原因一般是程序bug.负载倾斜. 那么这个较慢,是怎么判断的呢? ...

  3. js 自带的 filter&lpar;&rpar;方法

    1. 方法概述 它用于把Array的某些元素过滤掉,然后返回剩下的元素组成的数组. 2. 例子 2.1 尝试用filter()筛选出素数: 'use strict'; function get_pri ...

  4. FMDB简单使用

    1.增删改查://注意:dataWithPath中的路径参数一般会选择保存到沙箱中的Documents目录中: //如果这个参数设置为nil则数据库会在内存中创建: //如果设置为@””则会在沙箱中的 ...

  5. iOS苹果开发者客服电话地址

    苹果开发者客服电话地址:https://developer.apple.com/contact/phone.php *地区客服电话:4006 701 855 中国香港地区客服电话:(852) 2 ...

  6. Counting Rectangles

    Counting Rectangles Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 1043 Accepted: 546 De ...

  7. MySQL 面试基础

    相关:http://blog.csdn.net/u013252072/article/details/52912385          http://blog.csdn.net/zhangliang ...

  8. 使用SAX解析xml文档

    1.首先,在main方法中解析xml文档,具体代码如下: import org.w3c.dom.*; import javax.xml.parsers.DocumentBuilder; import ...

  9. &lbrack;转&rsqb;Kindeditor图片粘贴上传&lpar;chrome&rpar;

    原文地址:https://www.cnblogs.com/jsper/p/7608004.html 首先要赞一下kindeditor,一个十分强大的国产开源web-editor组件. kindedit ...

  10. pyplot-常用图表

    pyplot-常用图表 介绍最常用的:折线图.散点图.柱状图.直方图.饼图 的绘制 需要学习的不只是如何绘图,更是什么样的数据用什么图表显示效果最好 折线图 折线图用于显示随时间或有序类别的变化趋势 ...