js轮盘抽奖实例分析


Posted in Javascript onApril 17, 2020

现在学习到了过渡效果了,已经开始有做动画效果的意识了,会实现一些比较炫的小玩意,一个网页加入过渡动画效果,会让人看起来很有美观,不僵硬,有看头,动画是一个网页美观的主要体现之一,下面做个使用个过渡效果实现的抽奖例子。

先来效果图: 

js轮盘抽奖实例分析

这个的实现需要使用到一些js代码。

所需图片:

js轮盘抽奖实例分析

这张图是pointer.png的位置的。

js轮盘抽奖实例分析

turntable-bg.jpg这张是背景图,在背景位置。

js轮盘抽奖实例分析

这张是turntable.png位置的。  

需要这三张图片,如果要实现一下,直接另存这三图片引入进去即可。如果不会请修改成对应的图片名字,放到同一个文件下。

代码: 

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>抽奖</title>
 <!-- 这里是css部分 -->
 <style>
 #bg{
 width: 650px;
 height: 600px;
 margin: 0 auto;
 background: url(turntable-bg.jpg) no-repeat;
 position: relative;
 }
 img[src^="pointer"]{
 position: absolute;
 z-index: 10;
 top: 155px;
 left: 247px;
 }
 img[src^="turntable"]{
 position: absolute;
 z-index: 5;
 top: 60px;
 left: 116px;
 transition: all 4s;
 }
 
 </style>
</head>
<body>
<!-- 这里是HTML结构部分 -->
 <div id="bg">
 <img src="pointer.png" alt="pointer">
 <img src="turntable.png" alt="turntable">
 </div>
 <!-- 这里是js部分 -->
 <script>
 var oPointer=document.getElementsByTagName("img")[0];
 var oTurntable=document.getElementsByTagName("img")[1];
 var cat=51.4;
 var num=0;
 var offOn=true;
 document.title="";
 
 oPointer.onclick=function(){
 if(offOn){
 oTurntable.style.transform="rotate(0deg)";
 offOn=!offOn;
 ratating();
 }
 }

 function ratating(){
 var timer=null;
 var rdm=0;
 clearInterval(timer);
 timer=setInterval(function(){
 if(Math.floor(rdm/360)<3){
 rdm=Math.floor(Math.random()*3600); 
 }else{
 oTurntable.style.transform="rotate("+rdm+"deg)";
 clearInterval(timer);
 setTimeout(function(){
 offOn=!offOn;
 num=rdm%360;
 if(num<=cat*1){
 alert("4999元");
 }else if(num<=cat*2){
 alert("条50元");
 }else if(num<=cat*3){
 alert("10元");
 }else if(num<=cat*4){
 alert("5元");
 }else if(num<=cat*5){
 alert("免息服务");
 }else if(num<=cat*6){
 alert("提交白金");
 }else if(num<=cat*7){
 alert("未中奖");
 }
 },4000);
 } 
 },30); 
 }
 </script>
</body>
</html>

css和HTML代码不多,主要是为了实现过渡设置,还有为了实现层叠而使用position定位,让元素脱离文档流,js代码在于获取元素和事件的点击,点击指针会旋转,所以要给指针加个点击事件,然后是判断旋转是否停止,如果没有就点击也不能调用函数ratating(),这个函数执行转盘的旋转和判断指针停在什么位置,然后弹出相应的内容,而函数里实现旋转的过程,是获取转盘的元素,然后使用js控制css的属性-transform:rotate(),我们不是使用过这个属性在css里直接使它实现旋转的效果吗?就是和伪类选择器:hover及过渡属性一起使用去实现的,那么因为css实现不了数字的运算和鼠标点击,所以让js去实现且控制css属性,实现到点击旋转这个功能,然而定时器的使用暂时不说,思路就是使用js实现数字的运算和鼠标的点击及css属性的控制达到旋转的效果。

Math.random()是随机数的生成,Math.floor()向下取整。

想要学习更多关于抽奖功能的实现,请参考此专题:抽奖功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 判断计算字符串长度/判断空的简单方法
Aug 05 Javascript
Js操作树节点自动折叠展开的几种方法
May 05 Javascript
jquery实现人性化的有选择性禁用鼠标右键
Jun 30 Javascript
JavaScript中window.open用法实例详解
Apr 15 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
Dec 08 Javascript
JavaScript类型系统之Object详解
Jan 07 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
Feb 27 Javascript
Bootstrap基本插件学习笔记之模态对话框(16)
Dec 08 Javascript
JavaScript中Object基础内部方法图
Feb 05 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
Apr 21 Javascript
angularJs中$http获取后台数据的实例讲解
Aug 08 Javascript
layui 动态设置checbox 选中状态的例子
Sep 02 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 #Javascript
onmouseover事件和onmouseout事件全面理解
Aug 15 #Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
Aug 15 #Javascript
又一款js时钟!transform实现时钟效果
Aug 15 #Javascript
最丑的时钟效果!js canvas时钟制作方法
Aug 15 #Javascript
深入分析javascript中console命令
Aug 14 #Javascript
Vue.js 表单校验插件
Aug 14 #Javascript
You might like
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
nodejs导出excel的方法
2015/06/30 NodeJs
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
[01:44]Ti10举办地公布
2019/08/25 DOTA
[01:00:10]完美世界DOTA2联赛PWL S2 FTD vs Inki 第二场 11.21
2020/11/24 DOTA
python查找第k小元素代码分享
2013/12/18 Python
Python Web开发模板引擎优缺点总结
2014/05/06 Python
深入解析Python中的变量和赋值运算符
2015/10/12 Python
在pytorch中查看可训练参数的例子
2019/08/18 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
英国女性时尚品牌:Apricot
2018/12/04 全球购物
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
教师年终个人自我评价
2013/10/04 职场文书
大学生个人推荐信范文
2013/11/25 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
教师个人教学总结
2015/02/11 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
交流会主持词
2015/07/02 职场文书
Python中rapidjson参数校验实现
2021/07/25 Python
python数字图像处理:图像简单滤波
2022/06/28 Python