原生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 ...
随机推荐
- mysql的多表查询
转自:http://huaxia524151.iteye.com/blog/1423614 转自:http://blog.sina.com.cn/s/blog_4c197d420101cnm9.htm ...
- android国外网站
转载来自 http://www.23apk.com/?p=305 http://www.androidboards.com/ http://www.androidev.com/ http://andr ...
- Codeforces Round #Pi (Div. 2) C. Geometric Progression map
C. Geometric Progression Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...
- hadoop1.2.1的namenode格式化失败的问题
最近要开始找工作,就在原来搭建好的hadoop1.2.1的伪分布式跑跑mapreduce 很久没用,就想着格式化一下namode,结果: Format aborted in /uar/local/ha ...
- Android 利用Gson生成或解析json
目前手机端和服务端数据交流格式一般是json,而谷歌提供了Gson来解析json.下载Gson:https://code.google.com/p/google-gson/ 下载的放在lib并导入,若 ...
- Hadoop_10_12虚拟机01_虚拟机NAT方式联网【自己的亲测笔记】
NAT方式 1.查看网络信息--ifconfig(同windows中的ipconfig相同) 主要关注的是第三行内容,分别是Ip地址.广播地址.子网掩码 2.安装完系统后需要配置三个地方--IP地 ...
- 简单几何(求凸包点数) POJ 1228 Grandpa's Estate
题目传送门 题意:判断一些点的凸包能否唯一确定 分析:如果凸包边上没有其他点,那么边想象成橡皮筋,可以往外拖动,这不是唯一确定的.还有求凸包的点数<=2的情况一定不能确定. /********* ...
- 递推DP URAL 1353 Milliard Vasya's Function
题目传送门 /* 题意:1~1e9的数字里,各个位数数字相加和为s的个数 递推DP:dp[i][j] 表示i位数字,当前数字和为j的个数 状态转移方程:dp[i][j] += dp[i-1][j-k] ...
- 计算几何 HDOJ 4720 Naive and Silly Muggles
题目传送门 /* 题意:给三个点求它们的外接圆,判断一个点是否在园内 计算几何:我用重心当圆心竟然AC了,数据真水:) 正解以后补充,http://www.cnblogs.com/kuangbin/a ...
- python tile
tile(A,reps) 创建一个数组,通过reps次重复A >>>a=np.arry([0,1,2])#创建了一个数组 >>>np.tile(a,2)#创建了一个 ...