原生js实现跑马灯抽奖效果
目前好多的微信活动都有一些抽奖活动,其中就有跑马灯。
<!DOCTYPE html>
<html>
<head>
<title>跑马灯效果</title>
<style>
table .pao{
border:1px solid #e5e5e5;
padding:10px 20px;
}
table .on{
border-color:red;
color:red;
}
</style>
<script>
window.onload = function(){
var paomadeng = {
currentIndex : 1, //当前索引
indexCount : 12, //个数
timer : 0, //定时器
currentCycle : 0, //当前圈数
cycles : 4, //跑的圈数
speed : 400, //速度,即定时器的时间间隔
key : 0, //钥匙,随机数
btn : 0, //触发按钮
classPrefix : "pao-", //元素类名class前缀 reset : function(){
//触发对象
paomadeng.btn = this;
paomadeng.btn.style.display = "none"; clearInterval(paomadeng.timer);
paomadeng.currentCycle = 0;
paomadeng.speed = 400;
paomadeng.key = Math.ceil(Math.random() * paomadeng.indexCount);
console.log("key:" + paomadeng.key); paomadeng.run();
},
run : function(){
console.log("speed:" + paomadeng.speed); var before = paomadeng.currentIndex == 1 ? paomadeng.indexCount : paomadeng.currentIndex - 1; //设置上一索引的类名
var beforeNode = document.getElementsByClassName(paomadeng.classPrefix + before)[0];
var beforeClassNewName = beforeNode.className.replace("on","");
beforeNode.className = beforeClassNewName;
//设置当前索引的类名
var currentNode = document.getElementsByClassName(paomadeng.classPrefix + paomadeng.currentIndex)[0];
currentNode.className += " on"; //注意前面有空格 paomadeng.upSpeed();
paomadeng.downSpeed(); paomadeng.currentIndex += 1;
paomadeng.currentIndex = paomadeng.currentIndex > paomadeng.indexCount ? 1: paomadeng.currentIndex;
},
//加速
upSpeed : function(){
//前2圈且speed>100时加速
if(paomadeng.currentCycle < 2 && paomadeng.speed > 100){
paomadeng.speed -= 5 * paomadeng.currentIndex ;
paomadeng.stop();
paomadeng.start();
}
},
//增加圈数 并 减速
downSpeed : function(){
//增加圈数
if(paomadeng.currentIndex == paomadeng.indexCount){
paomadeng.currentCycle += 1;
} //如果当前所跑圈数小于总圈数-1 并且 速度小于400,那么减速
if(paomadeng.currentCycle > paomadeng.cycles-1 && paomadeng.speed < 400){
paomadeng.speed += 20;
paomadeng.stop();
paomadeng.start();
} //如果当前所跑圈数大于总圈数 且 索引值等于key,那么停止奔跑
if(paomadeng.currentCycle > paomadeng.cycles && paomadeng.currentIndex == paomadeng.key){
paomadeng.stop();
paomadeng.showPrize();
}
},
stop : function(){
clearInterval(paomadeng.timer);
},
start : function(){
paomadeng.timer = setInterval(paomadeng.run , paomadeng.speed);
},
showPrize : function(){
//过一会再显示提示信息
setTimeout(function(){
alert("恭喜,你中了" + paomadeng.key + "等奖");
paomadeng.btn.style.display = "block";
},700); }
};
document.getElementById("startPao").onclick= paomadeng.reset;
};
</script>
</head> <body>
<div class="container">
<table>
<tr>
<td class="pao pao-1">1</td>
<td class="pao pao-2">2</td>
<td class="pao pao-3">3</td>
<td class="pao pao-4">4</td>
</tr>
<tr>
<td class="pao pao-12">12</td>
<td class="pao"></td>
<td class="pao"></td>
<td class="pao pao-5">5</td>
</tr>
<tr>
<td class="pao pao-11">11</td>
<td class="pao"></td>
<td class="pao"></td>
<td class="pao pao-6">6</td>
</tr>
<tr>
<td class="pao pao-10">10</td>
<td class="pao pao-9">9</td>
<td class="pao pao-8">8</td>
<td class="pao pao-7">7</td>
</tr>
</table>
<br/>
<input type="button" value="开始跑" id="startPao" />
</div>
</body>
</html>
原生js实现跑马灯抽奖效果的更多相关文章
- JS实现跑马灯效果(向左,向上)
<html> <head> <title>JS实现跑马灯效果</title> <style> * { font-size:12px; fon ...
- Android:TextView文字跑马灯的效果实现
解决TextView文字显示不全的问题. 简单设置跑马灯的效果: <TextView android:id="@+id/textView" android:layout_wi ...
- 在android中用跑马灯的效果显示textview
大家好,在我们通常的android project中,通常需要用到textview这一个布局文件,并且对于这一个显示布局所需要的文本文字内容. 下面我们就来介绍一种方法来实现在android中用跑马灯 ...
- Android 高级UI设计笔记05:使用TextView实现跑马灯的效果
1. 使用TextView属性实现跑马灯的效果: (1). 新建一个Android工程,命名为"MarqueeTextViewDemo",如下: (2). 来到activity_m ...
- JAVA 跑马灯文字效果
JAVA跑马灯文字效果的实现: 1. 首先创建一个继承JFrame类的HorseRaceLightTextFrame窗体类,代码如下: package com.example.horseracelig ...
- 它们的定义TextView使之具有跑马灯的效果
一.引入问题 使用通用textview快乐效应,焦点事件不启动滚动,button目前的焦点事件,但丑,因此,需要定制TextView 天生焦点 个textview FocusedTextView.ja ...
- android使用TextView实现跑马灯的效果(1)
android使用TextView实现跑马灯的效果 1.activity_main.xml <?xml version="1.0" encoding="utf-8& ...
- OC基础之推荐一个旋转木马(跑马灯)效果的图片展示Demo
这个旋转木马(跑马灯)效果的图片展示Demo,包括设定旋转方向,图片倒影,背景设置,旋转速度,开始结束,点击显示选中的图片,彩色的块展示等等功能 效果图:(源码下载:https://github.co ...
- Android 纵向跑马灯滚动效果
像淘宝和京东都会有跑马灯的效果,今天给大家贡献下以前项目的一个demo,各位看官,且看效果图. 我们先定义一个Bean文件,这个实体类文件主要包含标题,内容描述,以及还有跳转的链接. LampBean ...
随机推荐
- GBK、GB2312、iso-8859-1之间的区别
转自:http://blog.csdn.net/jerry_bj/article/details/5714745 GBK.GB2312.iso-8859-1之间的区别 GB2312,由中华人民共和国政 ...
- C#学习笔记(八)——定义类的成员
一.成员的定义 1.定义字段 class Myclass { public int MyInt; } 可以使用readonly关键字,表示这个字段只能在执行构造函数的过程中赋值,或者由初始化语句赋值. ...
- 关于P,V操作理解的分析
P-V操作定义: 假设sem是个整型变量. P原语的主要操作是: (1)sem减1: (2)若sem减1后仍大于或等于零,则该进程继续执行: (3)若sem减1后小于零,则该进程被阻塞,在相应队列 ...
- 获取MSSQL Server中的相关信息(视图、存储过程、触发器、表)
在SQL SERVER得到某个数据库下面所有的表.视图.存储过程.触发器 select name from sysobjects where xtype='TR' --所有触发器select name ...
- JavaScript案例四:全选练习
JavaScript实现全选,全不选等效果... <!DOCTYPE html> <html> <head> <title>JavaScript全选练习 ...
- 数学+高精度 ZOJ 2313 Chinese Girls' Amusement
题目传送门 /* 杭电一题(ACM_steps 2.2.4)的升级版,使用到高精度: 这次不是简单的猜出来的了,求的是GCD (n, k) == 1 最大的k(1, n/2): 1. 若n是奇数,则k ...
- White Rectangles[HDU1510]
White Rectangles Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- BZOJ3547 : [ONTAK2010]Matchings
树形DP f[i][0]表示不向下连边的最大匹配数 f[i][1]表示向下连一条边的最大匹配数 h[][]表示对应的方案数 为了防止爆栈用BFS 为了防止MLE: 1.数组循环利用,比如存边的数组在存 ...
- Spark Streaming实时计算框架介绍
随着大数据的发展,人们对大数据的处理要求也越来越高,原有的批处理框架MapReduce适合离线计算,却无法满足实时性要求较高的业务,如实时推荐.用户行为分析等. Spark Streaming是建立在 ...
- HTML5中的Blob对象的使用
HTML5中的Blob对象和MYSQL中的BLOB类型在概念上是有点区别的.MYSQL中的BLOB类型就只是个二进制数据容器.而HTML5中的Blob对象除了存放二进制数据外还可以设置这个数据的MIN ...