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 相关文章推荐
使用户点击后退按钮使效三行代码
Jul 07 Javascript
Javascript 日期对象Date扩展方法
May 30 Javascript
innerText 使用示例
Jan 23 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
Aug 13 Javascript
JS模拟的Map类实现方法
Jun 17 Javascript
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
Apr 14 jQuery
vue.js选中动态绑定的radio的指定项
Jun 02 Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 jQuery
AngularJS中table表格基本操作示例
Oct 10 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
Jan 30 Javascript
在vue中使用vuex,修改state的值示例
Nov 08 Javascript
原生js实现密码强度验证功能
Mar 18 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自动判断字符集并转码的详解
2013/06/26 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
destoon之一键登录设置
2014/06/21 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
用JavaScript隐藏控件的方法
2009/09/21 Javascript
javascript面向对象之Javascript 继承
2010/05/04 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
2016/02/17 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
python如何在终端里面显示一张图片
2016/08/17 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
python列表生成式与列表生成器的使用
2018/02/23 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
python实现复制文件到指定目录
2019/10/16 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
Python加速程序运行的方法
2020/07/29 Python
瑞典度假品牌:OAS
2019/05/28 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
大学生职业规划论文
2014/01/11 职场文书
模特大赛策划方案
2014/05/28 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL