如何用JS制作九宫格抽奖的功能,思路及方法是什么
Admin 2022-06-30 群英技术资讯 1201 次浏览
这篇文章主要介绍“如何用JS制作九宫格抽奖的功能,思路及方法是什么”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何用JS制作九宫格抽奖的功能,思路及方法是什么”文章能帮助大家解决问题。本文实例为大家分享了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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
拖拽元素的需求还是比较常见的,之前我们也了解过拖拽元素,这篇文章给大家分享的是用jQuery实现容器间的元素拖拽效果,具体怎样做呢?我们直接看代码:
这篇文章主要为大家详细介绍了js实现上传图片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
varpath=require('path');//当发现有多个连续的斜杠时,会替换成一个;当路径末尾包含斜杠时,会保留;//在Windows系统会使用反斜杠。varp=path.normalize('foo/bar//baz/asdf/quux/..');varp2=path.normalize('foo/bar//baz/asdf/quux/../')
如何在Typescript中使用for...in ?本人在TS中用for...in出现了些问题,也想到了一些解决方法。那么先来看看下面报错的代码吧。
最近做了一个比较老的vue项目,启动居然各种报错,下面这篇文章主要给大家介绍了关于Vue常见报错以及解决方案的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008