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 相关文章推荐
jQuery的运行机制和设计理念分析
Apr 05 Javascript
编写自己的jQuery提示框(Tip)插件
Feb 05 Javascript
jquery实现浮动的侧栏实例
Jun 25 Javascript
js实现显示当前状态的导航效果代码
Aug 28 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 Javascript
JS模态窗口返回值兼容问题的完美解决方法
May 28 Javascript
bootstrap中使用google prettify让代码高亮的方法
Oct 21 Javascript
jQuery窗口拖动功能的实现代码
Feb 04 Javascript
jQuery点击头像上传并预览图片
Feb 23 Javascript
vue.js利用defineProperty实现数据的双向绑定
Apr 28 Javascript
详解Vue2.0 事件派发与接收
Sep 05 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
Nov 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中的按位与和按位或操作示例
2014/01/27 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
KMP算法精解及其Python版的代码示例
2016/06/01 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
美国在线轮胎零售商:SimpleTire
2019/04/08 全球购物
2014村务公开实施方案
2014/02/25 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
2014年工程工作总结
2014/11/25 职场文书
2015大学迎新标语
2015/07/16 职场文书
医学会议开幕词
2016/03/03 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
深入理解以DEBUG方式线程的底层运行原理
2021/06/21 Java/Android
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js
MySQL 逻辑备份 into outfile
2022/05/15 MySQL