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的执行顺序 之jQuery.html并非万能钥匙
Mar 03 Javascript
jquery如何把参数列严格转换成数组实现思路
Apr 01 Javascript
jquery动态加载select下拉框示例代码
Dec 10 Javascript
基于iframe实现类似于ajax的页面无刷新
May 31 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
Jul 08 Javascript
JS组件Form表单验证神器BootstrapValidator
Jan 26 Javascript
JS中innerHTML和pasteHTML的区别实例分析
Jun 22 Javascript
AngularJS入门教程之模块化操作用法示例
Nov 02 Javascript
微信小程序 Nginx环境配置详细介绍
Feb 14 Javascript
js轮播图的插件化封装详解
Jul 17 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
Aug 04 Javascript
JS代码实现电脑配置检测功能
Mar 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
Mysql的常用命令
2006/10/09 PHP
简单的PHP留言本实例代码
2010/05/09 PHP
PHP实现二维数组根据key进行排序的方法
2016/12/30 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
js遍历td tr等html元素
2012/12/13 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
JS+CSS实现滑动切换tab菜单效果
2015/08/25 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
Python分支结构(switch)操作简介
2018/01/17 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
比利时买床:Beter Bed
2017/12/06 全球购物
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
四川internet信息高速公路(C#)笔试题
2012/02/29 面试题
医院辞职信范文
2014/01/17 职场文书
竞选班委演讲稿
2014/04/28 职场文书
监察建议书格式
2014/05/19 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
给医院的感谢信
2015/01/21 职场文书
Python列表的索引与切片
2022/04/07 Python