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 相关文章推荐
javascript 图片上传预览-兼容标准
Jun 01 Javascript
非阻塞动态加载javascript广告实现代码
Nov 17 Javascript
JavaScript通过正则表达式实现表单验证电话号码
Mar 07 Javascript
javascript的数组和常用函数详解
May 09 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
Dec 18 Javascript
js通过classname来获取元素的方法
Nov 24 Javascript
详解VueJs异步动态加载块
Mar 09 Javascript
Chrome调试折腾记之JS断点调试技巧
Sep 11 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
Dec 26 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
Oct 20 Javascript
vue+iview/elementUi实现城市多选
Mar 28 Javascript
vue+springboot实现登录验证码
May 27 Vue.js
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/05/12 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
Laravel+jQuery实现AJAX分页效果
2016/09/14 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
jQuery学习笔记 操作jQuery对象 属性处理
2012/09/19 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
Vue实现固定定位图标滑动隐藏效果
2019/05/30 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
在weex中愉快的使用scss的方法步骤
2020/01/02 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
Python内置函数的用法实例教程
2014/09/08 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
根据tensor的名字获取变量的值方式
2020/01/04 Python
python lambda函数及三个常用的高阶函数
2020/02/05 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
python爬取音频下载的示例代码
2020/10/19 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
7 For All Mankind官网:美国加州洛杉矶的高级牛仔服装品牌
2018/12/20 全球购物
党员民主生活会整改措施
2014/09/26 职场文书
爱心捐书倡议书
2015/04/27 职场文书
检察院起诉意见书
2015/05/20 职场文书
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android