龙空技术网

js实现一个抽奖逻辑

前端小陈 220

前言:

如今咱们对“css抽奖”可能比较着重,小伙伴们都想要剖析一些“css抽奖”的相关文章。那么小编也在网摘上网罗了一些对于“css抽奖””的相关文章,希望我们能喜欢,朋友们一起来学习一下吧!

在日常生活中,我们经常会遇到各种抽奖活动,今天我们来实现一个小小的抽奖逻辑。话不多说,先上效果:

麻雀虽小,五脏俱全。各种细节东西可以自己另做修改。

html页面上,先用ul和li元素排列成一个九宫格。初始化的起点在1上,点击中间的“点击抽奖”,生成一个随机数,外面的方块根据生成的数字进行旋转,直到停留到指定的步数上,然后弹窗提示中奖情况。外面方块的变化是给对应发方块动态添加背景色实现的。

完整代码如下:

<!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>抽奖</title>    <style>        *{            margin: 0;            padding: 0;        }      #tab{        width:300px;        height:300px;        border:1px solid #ccc;        margin: 100px auto;      }      li{          list-style: none;          width: 98px;          height:98px;          background-color: aqua;          text-align: center;          line-height: 100px;          float:left;          border: 1px solid #aaa;      }      .activeLi{        background-color: orange;       }    </style></head><body>  <div id="tab">      <ul>         <li class="activeLi">1</li>         <li>2</li>         <li>3</li>         <li>4</li>         <li onclick="change()">点击抽奖</li>         <li>6</li>         <li>7</li>         <li>8</li>         <li>9</li>      </ul>  </div></body></html><script type="text/javascript">var num=0;var timer=null;var uLi=document.querySelectorAll("li");var newNum=null; function change(){     newNum=parseInt(Math.random()*(24-17+1)+17); // 生成17-24之间的随机数     const narr=[0,1,2,5,8,7,6,3];  // 从0开始,九宫格顺时针旋转一圈时对应的li的下标     const arr=[1,2,5,8,7,6,3,0];   // 从1开始,九宫格顺时针旋转一圈时对应的li的下标     timer=setInterval(function(){        var pre=narr[num%8];  // 算出上一步的li下标        var nest=arr[num%8]; // 算出当前所在的li下标        uLi[pre].setAttribute("class","");   // 清除上一步的li的样式        uLi[nest].setAttribute("class","activeLi");   // 添加当前所在li的样式        num+=1;        if(num+1===newNum){          clearInterval(timer); // 步数到了随机数的时候,停止          setTimeout(function(){            // 弹窗告诉中奖情况,然后回归初始化样式            alert(`恭喜中奖${nest+1}`);            uLi[nest].setAttribute("class","");             uLi[0].setAttribute("class","activeLi");             num=0;            newNum=null;          },400)        }        },100) }</script>

重点在上面的js中,复制完整代码即可实现上面的图片效果。实现中奖逻辑的方式还有很多,这是其中一种。喜欢的话欢迎收藏!

标签: #css抽奖