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 onpropertychange输入框 事件获取属性
Mar 26 Javascript
form表单action提交的js部分与html部分
Jan 07 Javascript
js解析json读取List中的实体对象示例
Mar 11 Javascript
Js实现网页键盘控制翻页的方法
Oct 30 Javascript
JS随机调用指定函数的方法
Jul 01 Javascript
js实现简单的验证码
Dec 25 Javascript
Javascript函数中的arguments.callee用法实例分析
Sep 16 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
Nov 18 Javascript
jquery实现焦点轮播效果
Feb 23 Javascript
微信小程序实现发红包功能
Jul 11 Javascript
layui表格设计以及数据初始化详解
Oct 26 Javascript
vue模块移动组件的实现示例
May 20 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 缓存函数代码
2008/08/27 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
PHP实现八皇后算法
2019/05/06 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
微信小程序页面传值实例分析
2017/04/19 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
python动态监控日志内容的示例
2014/02/16 Python
python海龟绘图实例教程
2014/07/24 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
pytorch masked_fill报错的解决
2020/02/18 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
全世界最美丽的四星和五星级酒店预订:Prestigia.com
2017/11/15 全球购物
旅游管理毕业生自荐信
2013/11/05 职场文书
酒店副总岗位职责
2013/12/24 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
征婚广告词
2014/03/17 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
Jsonp劫持学习
2021/04/01 PHP
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技