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的IE和Firefox兼容性汇编
Jul 01 Javascript
javascript遍历控件实例详细解析
Jan 10 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
Jan 24 Javascript
javascript根据像素点取位置示例
Jan 27 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
Apr 08 Javascript
JS 排序输出实现table行号自增前端动态生成的tr
Aug 13 Javascript
javascript实现拖动元素交换位置
Nov 29 Javascript
网页中JS函数自动执行常用三种方法
Mar 30 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
May 18 Javascript
BootStrap中Tab页签切换实例代码
May 30 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
Feb 23 Javascript
vue组件横向树实现代码
Aug 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之生成GIF动画的实现方法
2013/06/07 PHP
给ECShop添加最新评论
2015/01/07 PHP
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
vue和react等项目中更简单的实现展开收起更多等效果示例
2018/02/22 Javascript
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
Python代码实现http/https代理服务器的脚本
2019/08/12 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
python实现五子棋程序
2020/04/24 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
python跨文件使用全局变量的实现
2020/11/17 Python
css3圆角样式分享自定义按钮样式
2013/12/27 HTML / CSS
性能服装:HYLETE
2018/08/14 全球购物
公民授权委托书范本
2014/09/17 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
客户付款通知书
2015/04/23 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
停发工资证明范本
2015/06/12 职场文书
同事离别感言
2015/08/04 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS