HTML+JS写转盘抽奖的代码是什么
Admin 2022-11-14 群英技术资讯 276 次浏览
闲来没事,做了一个模拟转盘抽奖的HTML&JS的效果:
可以在设置的时候,选择几个区域,并且可以填写指针将要停止的区域
比如,我选择了"区域2",结果就是这样
具体可以见下面的源码:(注意,这里JQ文档没有贴出来,需要自行引入)
HTML文件:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> #RotationDiv { /*初始化界面,让指针朝上*/ transform: rotate(180deg); -ms-transform: rotate(180deg); -moz-transform: rotate(180deg); -webkit-transform: rotate(180deg); -o-transform: rotate(180deg); width: 60px; height: 85px; /*边框是用来看旋转的地方的*/ /*border: 1px solid black;*/ } </style> <!--引入jq1.8--> <script src="js/jquery-1.8.3.js" type="text/javascript" charset="utf-8"></script> <!--引入旋转的js--> <script src="js/rotation-index.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> function rotationDiv(num) { RotationIndex("RotationDiv", 8, num, 4, 5) } </script> </head> <body> <div style="height: 85px;"> <table align="center"> <tr> <td><input type="button" value="选择区域:1" οnclick="rotationDiv(1)" /> <input type="button" value="选择区域:2" οnclick="rotationDiv(2)" /> <input type="button" value="选择区域:3" οnclick="rotationDiv(3)" /> <input type="button" value="选择区域:4" οnclick="rotationDiv(4)" /> <input type="button" value="选择区域:5" οnclick="rotationDiv(5)" /> <input type="button" value="选择区域:6" οnclick="rotationDiv(6)" /> <input type="button" value="选择区域:7" οnclick="rotationDiv(7)" /> <input type="button" value="选择区域:8" οnclick="rotationDiv(8)" /></td> </tr> </table> </div> <table align="center" style="background-image: url(img/revolveBgImage.png); width: 500px;height: 500px;"> <tr> <td colspan="3"></td> </tr> <tr> <td style="width: 220px;"> </td> <td> <div id="RotationDiv"><img src="img/timg.png" width="100%" /></div> </td> <td style="width: 220px;"></td> </tr> <tr> <td colspan="3"></td> </tr> </table> </body> </html>
自己写的旋转的JS文件:
/** * @param {Object} indexID 想要旋转的控件的id * @param {Object} areaNum 区域的块数 * @param {Object} wantToStop 想要停止的位置(块号) * @param {Object} defaultTime 刚开始匀速旋转的时间 * @param {Object} chageTime 最后减速旋转的时间 */ function RotationIndex(indexID, areaNum, wantToStop, defaultTime, chageTime) { var stopAreaNum = 0; //停在区域的名字数 var areaArr = new Array(areaNum); var angle = 1; //每次旋转角度 // var randomTime = Math.random() * 1500; //随机时间 var nowTime = 0; //当前时间,随机起点,让停止来的更加真实 var disTime = 15; //时间差值,每15毫秒改变一次,基本上类似于60Hz刷新频率 var disangle = 13; //角度差值 var angle360 = 0; //用于记录角度数,360°范围的 var UP = (1 - ((12 / chageTime) * defaultTime)); //定义一个函数uniformizing parameter var IPFP = 12 * defaultTime + (12 / chageTime) * defaultTime * defaultTime; //定义一个反比例函数的参数Inverse proportional function parameters var myIntervalInRotationIndex = window.setInterval(function() { nowTime += disTime; //当时间小于默认时间时候 if((nowTime / 1000) <= defaultTime) { //匀速旋转 } else if((nowTime / 1000) > defaultTime && (nowTime / 1000) < (defaultTime + chageTime)) { //当时间大于默认时间,开始减速旋转 disangle = UP + (IPFP / (nowTime / 1000)); /** * 函数式为: * UP+IPFP/t=h * 其中t为时间,h为角度 * */ } else { angle360 = angle % 360; stopAreaNum = angle360 / (360 / areaNum); if(stopAreaNum >= (wantToStop - 1.5)) { disangle = 0.3; } else if(stopAreaNum >= (wantToStop - 1)) { disangle = 0.5; } else { disangle = 0.8; } if(stopAreaNum >= (wantToStop - 0.8) && stopAreaNum <= wantToStop) { window.clearInterval(myIntervalInRotationIndex); } } angle360 = angle % 360; angle += disangle; $("#" + indexID).attr("style", "transform:rotate(" + angle + "deg);-ms-transform:rotate(" + angle + "deg);-moz-transform:rotate(" + angle + "deg);-webkit-transform:rotate(" + angle + "deg);-o-transform:rotate(" + angle + "deg);") }, disTime) }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
vue中的过滤器分为两种:局部过滤器和全局过滤器。过滤器可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示(官方文档)
这篇文章要实现的需求是打开其他项目并传数据的的内容,那么vue如何向其他项目页面传数据?下面给大家介绍不跨域和跨域这两种情况下的方法,感兴趣的朋友接下来跟随小编来参考一下吧。
这篇文章主要为大家详细介绍了js实现放大镜效果的思路与代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在实际项目中,设置时间范围的功能还是比较常见的,在很多数据多,需要做筛选的场景都应用,那么我们实现设置时间范围的功能有什么方法呢?本文给大家分享用JS实现设置时间范围的功能,感兴趣的朋友就继续往下看吧。
这篇文章主要介绍了如何理解JavaScript中的立即执行函数,帮助大家更好的学习JavaScript,感兴趣的朋友可以了解下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008