效果:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript 实现九宫格抽奖</title>
<style>body{background-color: #2c9afc;}#container {width: 330px;height: 340px;margin: 10% auto;border: 7px solid #99d4ff;border-radius: 10px;padding: 2%;}#list {width: 330px;height: 340px;list-style: none;margin: 0;padding: 0;}#list li,#list span {width: 100px;height: 100px;float: left;text-align: center;line-height: 100px;position: relative;background-color: #384f9a;margin: 1.4%;border-radius: 5px;}#list li img{display: block;width: 100%;height: 100%;}#list li .mask{width: 100%;height: 100%;position: absolute;left:0;top:0;background: url(images/mask.png) no-repeat;background-size: cover;display: none;}#list span:hover {cursor: pointer;color: orange;font-size: 18px;}#list .active .mask{display: block;}#message {line-height: 32px;color: #9a9a9a;text-align: center;position:absolute;left: 50%;top: 50px;width: 300px;height: 50px;margin-left: -150px;display: none;background: #000;color: #fff;}
</style>
</head>
<body>            <h3 style="text-align:center;margin-top: 10%;color:white">JavaScript 实现九宫格抽奖</h3><div id="container"><ul id="list"><!-- img标签放奖品图片 --><!-- mask类为抽奖滚动起来的标记 --><li><img src="data:images/1.png"/><div class="mask"></div></li><li><img src="data:images/2.png"/><div class="mask"></div></li><li><img src="data:images/3.png"/><div class="mask"></div></li><li><img src="data:images/4.png"/><div class="mask"></div></li><span id="startbutton" onclick="startlottery()" style="background-color:#ff3a59;color:white;font-size: 20px;">开始抽奖</span><li><img src="data:images/5.png"/><div class="mask"></div></li><li><img src="data:images/6.png"/><div class="mask"></div></li><li><img src="data:images/7.png"/><div class="mask"></div></li><li><img src="data:images/8.png"/><div class="mask"></div></li></ul><div id="message"></div><!-- 获奖信息展示 --></div>
</body><script type="text/javascript">var container = document.getElementById('container'),li = container.getElementsByTagName('li'),span = document.getElementById('startbutton'),message = document.getElementById('message'),timer = null;bReady = true;//定义一个抽奖开关var prize = [0,1,2,4,7,6,5,3];//奖品li标签滚动的顺序var num = 0;//num用来存放得到的随机函数,也就是抽中的奖品//开始抽奖function startlottery(){if(bReady) {//当抽奖开关为true的时候,可点击抽奖message.style.display="none";//将获奖信息div隐藏(以防止上次抽奖信息还显示)span.style.background="#ada7a8";bReady = false;//抽奖开关设为false 处于抽奖中 即不能点击抽奖num = getrandomnum(1,9)//得到一个随机数(即奖品)// console.log(num)startinit(num);//执行抽奖初始化}}//抽中的奖品 返回1-9的整数,包含1,不包含9function getrandomnum(n, m) {return parseInt((m - n) * Math.random() + n);}//抽奖初始化function startinit(num) {var i = 0;  //定义一个i 用来计算抽奖跑动的总次数var t =200;  //抽奖跑动的速度 初始为200毫秒var rounds = 5;  //抽奖转动的圈数var rNum = rounds*8;  //标记跑动的次数(这是一个条件判断分界线)timer = setTimeout(startscroll, t);//每t毫秒执行startscroll函数//抽奖滚动的函数function startscroll() {//每次滚动抽奖将所有li的class都设为空for(var j = 0; j < li.length; j++) {li[j].className = '';}var prizenum = prize[i%li.length];  //通过i余8得到此刻在prize数组中的数字,该数字就是mask标记出现的位置li[prizenum].className = "active";i++;if(i<rNum-8){  //当i小于转(rNum-8次)的数量,t不变还是200毫秒timer = setTimeout(startscroll, t);//继续执行抽奖滚动}else if(i>= rNum-8 && i< rNum+num){//t时间变长,此时计时器运行速度降低,同时标签刷新速度也降低t+=(i-rNum+8)*5;timer = setTimeout(startscroll, t);//继续执行抽奖滚动}if( i >= rNum+num){//当i大于转rNum加随机数字num次计时器结束,出现提示框提示中奖信息if (num==1) {message.innerHTML="恭喜你中了耳机";}else if(num==2){message.innerHTML="恭喜你中了iPad";}else if(num==3){message.innerHTML="感谢参与";}else if(num==4){message.innerHTML="恭喜你中了洋娃娃";}else if(num==5){message.innerHTML="恭喜你中了红色鞋子";}else if(num==6){message.innerHTML="恭喜你中了白色手机";}else if(num==7){message.innerHTML="恭喜你中了黑色手机";}else if(num==8){message.innerHTML="恭喜你中了蓝色鞋子";}var timer2 = null;timer2 = setTimeout(function(){message.style.display="block";//奖品展示的信息为显示状态span.style.background="#ff3a59";clearTimeout(timer2);},1000);bReady = true;//当计时器结束后让span标签变为抽奖状态clearTimeout(timer);}}}</script>
</html>

JS实现九格宫抽奖,让中奖不再是梦!

转自微信公众号:前端进阶周刊,侵删

[JavaScript学习-01]JavaScript实现九宫格抽奖相关推荐

  1. JavaScript学习13 JavaScript中的继承

    JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript">//继承第一种方式: ...

  2. javaScript系列 [01]-javaScript函数基础

    [01]-javaScript函数基础 1.1 函数的创建和结构 函数的定义:函数是JavaScript的基础模块单元,包含一组语句,用于代码复用.信息隐蔽和组合调用. 函数的创建:在javaScri ...

  3. 简单的javascript学习01

    ---------------------------------------------------------------------------------------------------- ...

  4. JavaScript学习01

    逻辑运算 //逻辑非!的结果一定是true or false 而逻辑或和与与实际值有关 var log = console.log; log(!1); //false //内部执行如下: var re ...

  5. 【JavaScript学习】JavaScript 常用工具类封装

    文章目录 1.JavaScript 常用工具类封装 (1)获得浏览器地址所有参数 (2)将json转为get参数 (3)格式校验工具类 (4)数组操作工具类 (5)表单取值工具类 (6)时间转换工具类 ...

  6. 【JavaScript学习】JavaScript对象创建

    1.最简单的方法,创建一个对象,然后添加属性 1 var person = new Object(); 2 person.age = 23; 3 person.name = "David&q ...

  7. JAVASCRIPT学习笔记----Javascript引用类型

    引用类型的值(对象)是引用类型的一个实例,引用类型是一种数据结构. (一)Object类型 1.创建方式 1 //第一种:new Object() 2 var person = new Object( ...

  8. JavaScript 学习-8.JavaScript 箭头函数的使用

    前言 ES6 中引入了箭头函数() =>.箭头函数不需要使用function关键字,允许我们编写更短的函数. 箭头函数 之前使用function 定义函数 fun1 = function() { ...

  9. 【JavaScript从入门到精通】第一课 初探JavaScript魅力-01

    第一课 初探JavaScript魅力-01 JavaScript是什么 如今我们打开一个大型的网站,都会有很多JS效果的功能和应用.对于学过CSS+HTML的同学,即使是像淘宝那样的网站,用一两天时间 ...

最新文章

  1. inode与block详解
  2. 比特币现金(BCH)社交平台推出新玩法
  3. 03_ClickHouse数据格式,TabSeparated、TSKV、CSV格式、JSON格式、Parquet、ORC、其它数据格式(Native,Pretty,Values,Vertical等)
  4. Android -- 短信
  5. HTTP系列之:HTTP缓存
  6. Python到底是有什么魅力,让程序猿为它折腰?
  7. 安卓学习第10课——listview
  8. 6-2 多项式求值 (15 分)
  9. JDK源码(1)-阅读指引
  10. ArcGIS:ArcToolBox工具使用——提取DEM/DSM中的高程点
  11. gitlab用户,组,项目权限管控
  12. 1.7 试探法(回溯法)
  13. PreScan第三课:Sensors Model
  14. 数据库SQL(基础代码)
  15. 动手学树莓派第1章:先唠叨两句
  16. 手机连接Fiddler后无法上网问题解决
  17. AutoIt的录制(AU3Record)
  18. 【图片】图片处理,图片压缩相关知识分享
  19. html 给div设置边框颜色代码,div边框颜色设置
  20. 财务自由到底是啥感觉啊...

热门文章

  1. 虚拟主机做游戏服务器,虚拟主机做游戏服务器
  2. diskgenius创建efi分区_复制文件到当前分区
  3. PXI-10024100KSps、24Bit数据采集模块
  4. word2016修改批注名字
  5. JS复制文本到粘贴板,前端H5移动端点击按钮复制文本到粘贴板。
  6. edge怎么开启沉浸式阅读_美人鼓上舞!端午小长假,豫园将开启史上首次沉浸式国风庙会...
  7. canvas之-------水滴扩散特效
  8. 现实与理想(中国台湾大学彭明辉)
  9. 云函数调用失败的原因
  10. 昆明等保合规怎么建设,企业等保安全解决方案,等保建设测评流程