如何用JS制作九宫格抽奖的功能,思路及方法是什么
Admin 2022-06-30 群英技术资讯 452 次浏览
本文实例为大家分享了JavaScript实现抽奖器效果的具体代码,供大家参考,具体内容如下
这次实现的效果如下图:
所实现的功能是:当每次点击中间的抽奖按钮时,会随机选择一个盒子作为抽奖的结果。
那我们要如何实现抽奖的功能呢?
其实很简单,首先用html和css做出整体的框架,然后用js在中间按钮的onclick
函数中设置定时器+随机改变某一盒子的背景颜色就可以了。 下面我们来讨论一下细节的方面:
1、设计整体框架时,我们需要为每个盒子设置边框,这时会发现边框会出现重叠问题,导致边框变厚,解决的方法是:设置margin-right
和margin-bottom
为负值(值等于边框值)。
2、.在js中设置抽奖功能时,我们可以通过设置一个定时器A,在其中随机改变某一盒子的background-color
代表选中。为使抽奖可以在某一时刻暂停,我们可以设置定时器B,在某一时刻将定时器A关闭。
3、随机改变是怎么做到的呢? 首先调用document.getElementsByTagName
获取所有盒子,然后利用Math.random()*盒子的数目
,获取某一盒子下标,改变其背景颜色。
很显然定时器A是setInterval
,定时器B是setTimeout
。
而且在A中改变某一盒子背景颜色时,要将上一个被改变颜色的盒子还原为原来的颜色,我们需要记录上次被改变背景颜色的盒子。
具体见下面代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> *{ margin:0; padding: 0; } .container{ width: 400px; height: 400px; margin:50px auto; } span,#main{ display: block; width: 100px; height: 100px; border:2px pink solid; float:left; margin-left:-2px; margin-bottom:-2px; text-align: center; line-height: 100px; border-radius: 16px; box-shadow: 2px 2px 3px rgba(226, 86, 109, 0.459); } #main{ background-color: rgba(243, 97, 126, 0.651); cursor: pointer; } </style> </head> <body> <div class="container"> <div> <span>可视化</span> <span>图形学</span> <span>操作系统</span> </div> <div> <span>乐事</span> <div id="main">抽奖</div> <span>大白兔</span> </div> <div> <span>柠檬水</span> <span>黑咖啡</span> <span>芋泥奶茶</span> </div> </div> <script> let main=document.getElementById("main"); let box=document.getElementsByTagName("span"); var num=null; main.onclick=function(){ let tem=setInterval(() => { if(num!==null){ box[num].style.backgroundColor="white"; } num=parseInt(Math.random()*8); box[num].style.backgroundColor="rgba(243, 97, 126, 0.651)"; console.log(num); }, 120); setTimeout(() => { clearInterval(tem) }, 3000); } </script> </body> </html>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
相信很多小伙伴们都一直在疑惑,setState 到底是同步还是异步。本文就详细的介绍一下React中setState同步或异步问题,感兴趣的可以了解一下
关于JavaScript命名约定下文有详细的介绍,小编觉得挺实用的,对大家学习或工作或许有帮助,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
这篇文章给大家分享的是vue怎样实现验证码点击切换的功能。小编觉得挺实用的,因此分享给大家做个参考,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。
方法:1、将需要求平均值的数存入数组中;2、使用“for(i=0;i<arr.length;i++){sum+=arr[i]}”语句遍历数组,计算多个数的总和并赋值给变量“sum”;3、使用“sum/arr.length”语句计算出平均值。
本篇文章给大家带来了关于javascript的相关知识,主要介绍了JavaScript数组实例的9个方法,文章围绕主题展开详细的内容介绍没具有一定的参考价值,需要的朋友可以参考一下。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008