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 相关文章推荐
关于捕获用户何时点击window.onbeforeunload的取消事件
Mar 06 Javascript
简单的js表单验证函数
Oct 28 Javascript
JavaScript实现获取dom中class的方法
Feb 09 Javascript
javascript精确统计网站访问量实例代码
Dec 19 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
May 20 Javascript
如何提高Dom访问速度
Jan 05 Javascript
详解webpack和webpack-simple中如何引入css文件
Jun 28 Javascript
mui上拉加载更多下拉刷新数据的封装过程
Nov 03 Javascript
vue 实现通过手机发送短信验证码注册功能
Apr 19 Javascript
vue-cli 引入、配置axios的方法
May 08 Javascript
详解如何解决使用JSON.stringify时遇到的循环引用问题
Mar 23 Javascript
吃通javascript正则表达式
Apr 21 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版)
2006/10/09 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
Jquery幻灯片特效代码分享--鼠标点击按钮时切换(1)
2015/08/15 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
解决ant Design中this.props.form.validateFields未执行的问题
2020/10/27 Javascript
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
Python实现新浪博客备份的方法
2016/04/27 Python
python实现分页效果
2017/10/25 Python
python 对给定可迭代集合统计出现频率,并排序的方法
2018/10/18 Python
如何运行带参数的python脚本
2019/11/15 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
Python作用域与名字空间原理详解
2020/03/21 Python
.NET remoting的两种通道是什么
2016/05/31 面试题
工程造价管理专业大专生求职信
2013/10/06 职场文书
公司总经理岗位职责
2015/04/01 职场文书
2015秋季新学期开学寄语
2015/05/28 职场文书
活动简报范文
2015/07/22 职场文书
《所见》教学反思
2016/02/23 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
TV动画《神废柴☆偶像》公布先导PV
2022/03/20 日漫
SQL Server内存机制浅探
2022/04/06 SQL Server