HTML+JS写转盘抽奖的代码是什么
Admin 2022-11-14 群英技术资讯 925 次浏览
这篇文章主要讲解了“HTML+JS写转盘抽奖的代码是什么”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。闲来没事,做了一个模拟转盘抽奖的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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
nodejs运行项目出现Error: Cannot find module ws错误一般就是缺少了这个为“ws”的module模块,错误信息大致如下: Error: Cannot find module ws Require stack: - C:\Users\Administrator\Desktop\pcm-player-master\example\server\server.js [90m at Fu
目录进一步理解编译特点分析区分 LHS 和 RHS 的重要性前言:对于LHS和RHS,从字面意思来说是 Left Hand Side和 Right Hand Side即左手边和右手边,一般可以理解为赋值操作的左侧和右侧,然而不能片面的用=号左边还说右边去判断是LHS还是RHS通俗
这篇文章主要介绍了JS解决 Array.fill()参数为对象指向同一个引用地址问题,解决方案使用map返回出不同的引用的地址,fill参数可随意填写(不为空),主要是map函数中返回的数据,需要的朋友可以参考下
这篇文章主要为大家介绍了JavaScript之Array常见的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助V
js中模块化是什么意思?有什么用?很多新手对js中模块化可能不是很了解,对此,下面小编就给大家介绍一下模块化的概念和作用,以及怎样实现模块化,有需要的朋友可以参考,接下来我们一起往下看吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
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