JavaScript实现基本九宫格抽奖

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<style>
.gift{
	 background-color:#FFF;
	 display:inline-table; 
	 width:100px;
	 height:100px;
	 text-align:center;
	 padding:40px;
	 }
</style>
</head>

<body>
<div>
<div class="gift gift1">1</div>
<div class="gift gift2">2</div>
<div class="gift gift3">3</div>
</div>
<div>
<div class="gift gift0">8</div>
<div style="display:inline-table;"><button style="width:100px; height:100px;">ooo</button></div>
<div class="gift gift4">4</div>
</div>
<div>
<div class="gift gift7">7</div>
<div class="gift gift6">6</div>
<div class="gift gift5">5</div>
</div>
<span style="color:#ff0000;"><script src="jquery-1.11.2.js"></script></span>
<script type="text/javascript">
$(function(e) {
	var stopStep=1;//表示最终奖品位置
	var runT=null;//转动方法
	var step=-1;//计算转动的步数,控制转速和停止
	var during=2;//转速
	$("button").click(function(e){
        stopStep=Math.floor(Math.random()*8+1);
	    runT=setTimeout(runF,100);
	});
	function runF(){
		if(step>=(32+stopStep))//设置转动多少圈
		{
			$(".gift"+(step%8)).css("background-color","#F00");
			step=stopStep;
			alert("you get"+step);
			clearTimeout(runT);//停止转动
			return;
		}
		if(step>=(24+stopStep)){ //在即将结束转动前减速
                  during+=1;               
              }else{ 
                  if(during<=2){ //控制中间转速
                      during=2; 
                  } 
                  during--; 
              }           
		step++;
		$(".gift").each(function(index, element) {
            $(this).css("background-color","#FFF");
        });
		$(".gift"+(step%8)).css("background-color","#F00");
		runT=setTimeout(runF,during*50);
	}
});
</script>
</body>
</html>

           最近学了js,练练手。

          注意需要添加jquery,以上代码主要实现基本九宫格抽奖模型,界面内容自己完善。

思路:九宫格抽奖抽象出来,其实就是点击抽奖按钮以后,从某个单元开始,不停的绕着8个格子转动,最后停留在目标位置。

            也就是说,一开始就可以设定好目标位置stopStep,并用一个变量step用于计算转动的步数,这个计算的变量从0或1开始计算,直到达到设置的转动次数(就是你要他转多少圈)*8+stopStep,在这个转动的过程,你可以设置不同的转速。在转动过程中,要不断改变当前位置的单元格的颜色(或者你设置其他表示被选中的样式),每次还要记得先把上一步改变了颜色的单元格恢复到原来的样式。基本这样!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript实现九宫格抽奖,通常涉及前端的HTML、CSS和JavaScript交互。以下是一个简单的步骤概述: 1. **HTML结构**: 创建一个9格的网格布局,每个格子包含一个按钮或可点击元素,表示奖品。你可以使用`<div>`或`<button>`等元素。 ```html <div class="grid"> <button id="cell1">奖品1</button> <!-- ...重复八次 --> <button id="cell9">奖品9</button> </div> ``` 2. **CSS样式**: 定义网格样式和按钮样式,包括隐藏或显示某些按钮(用于抽奖)。 ```css .grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } ``` 3. **JavaScript逻辑**: 使用JavaScript来随机选择一个奖品并显示在相应的格子上。 ```javascript // 获取所有的按钮 const cells = document.querySelectorAll('.grid button'); // 随机选择一个格子的索引 const randomIndex = Math.floor(Math.random() * cells.length); // 获取对应格子并显示奖品 cells[randomIndex].innerText = '恭喜,你抽到了...'; ``` 4. **抽奖触发**: 可能的话,你可以添加一个事件监听器,比如点击某个按钮或者定时抽奖。例如: ```javascript // 添加点击事件监听器 cells.forEach((cell, index) => { cell.addEventListener('click', () => { if (index === randomIndex) { cell.innerText = '恭喜,你抽到了...'; } }); }); ``` 5. **增加复用性和扩展性**: 如果想多次抽奖,可以封装这个逻辑为一个函数,每次调用时生成新的随机数。 **相关问题--:** 1. 如何确保每个奖品被选中的概率相等? 2. 怎么样才能让抽奖过程更加互动,比如添加动画效果? 3. 如果有多个玩家同时参与,如何保证公平性?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值