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 相关文章推荐
Ext中下拉列表ComboBox组件store数据格式用法介绍
Jul 15 Javascript
JS命名空间的另一种实现
Aug 09 Javascript
node.js中的fs.lchown方法使用说明
Dec 16 Javascript
jquery实现最简单的滑动菜单效果代码
Sep 12 Javascript
Fullpage.js固定导航栏-实现定位导航栏
Mar 17 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
Dec 20 Javascript
JS中Safari浏览器中的Date
Jul 17 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
Dec 11 jQuery
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
May 14 Javascript
js判断一个对象是数组(函数)的方法实例
Dec 19 Javascript
vue页面加载时的进度条功能(实例代码)
Jan 13 Javascript
Jquery Datatables的使用详解
Jan 30 jQuery
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 class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
深入apache host的配置详解
2013/06/09 PHP
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
PHP计算日期相差天数实例分析
2016/02/23 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
List Installed Software Features
2007/06/11 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
嵌入式iframe子页面与父页面js通信的方法
2015/01/20 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
Bootstrap框架实现广告轮播效果
2016/11/28 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
Django框架models使用group by详解
2020/03/11 Python
python tkiner实现 一个小小的图片翻页功能的示例代码
2020/06/24 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
应聘自荐信
2013/12/14 职场文书
小学生美德少年事迹
2014/02/02 职场文书
酒店员工职业生涯规划
2014/02/25 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
井冈山红色之旅心得体会
2014/10/07 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL