目前好多的微信活动都有一些抽奖活动,其中就有跑马灯。

<!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实现跑马灯抽奖效果的更多相关文章

  1. JS实现跑马灯效果(向左,向上)

    <html> <head> <title>JS实现跑马灯效果</title> <style> * { font-size:12px; fon ...

  2. Android:TextView文字跑马灯的效果实现

    解决TextView文字显示不全的问题. 简单设置跑马灯的效果: <TextView android:id="@+id/textView" android:layout_wi ...

  3. 在android中用跑马灯的效果显示textview

    大家好,在我们通常的android project中,通常需要用到textview这一个布局文件,并且对于这一个显示布局所需要的文本文字内容. 下面我们就来介绍一种方法来实现在android中用跑马灯 ...

  4. Android 高级UI设计笔记05:使用TextView实现跑马灯的效果

    1. 使用TextView属性实现跑马灯的效果: (1). 新建一个Android工程,命名为"MarqueeTextViewDemo",如下: (2). 来到activity_m ...

  5. JAVA 跑马灯文字效果

    JAVA跑马灯文字效果的实现: 1. 首先创建一个继承JFrame类的HorseRaceLightTextFrame窗体类,代码如下: package com.example.horseracelig ...

  6. 它们的定义TextView使之具有跑马灯的效果

    一.引入问题 使用通用textview快乐效应,焦点事件不启动滚动,button目前的焦点事件,但丑,因此,需要定制TextView 天生焦点 个textview FocusedTextView.ja ...

  7. android使用TextView实现跑马灯的效果(1)

    android使用TextView实现跑马灯的效果 1.activity_main.xml <?xml version="1.0" encoding="utf-8& ...

  8. OC基础之推荐一个旋转木马(跑马灯)效果的图片展示Demo

    这个旋转木马(跑马灯)效果的图片展示Demo,包括设定旋转方向,图片倒影,背景设置,旋转速度,开始结束,点击显示选中的图片,彩色的块展示等等功能 效果图:(源码下载:https://github.co ...

  9. Android 纵向跑马灯滚动效果

    像淘宝和京东都会有跑马灯的效果,今天给大家贡献下以前项目的一个demo,各位看官,且看效果图. 我们先定义一个Bean文件,这个实体类文件主要包含标题,内容描述,以及还有跳转的链接. LampBean ...

随机推荐

  1. 为什么是List list = new ArrayList() 而不直接用ArrayList

    为什么是List list = new ArrayList(),而不直接用ArrayList? 编程是要面向对象编程,针对抽象(接口),而非具体.List 是接口,ArrayList是实现. 实现Li ...

  2. Effective C++笔记:实现

    条款26:尽可能延后变量定义式的出现时间 博客地址:http://www.cnblogs.com/ronny/ 转载请注明出处! 有些对象,你可能过早的定义它,而在代码执行的过程中发生了导常,造成了开 ...

  3. MATLAB学习笔记(八)——MATLAB数值积分与微分

    (一)数值积分 一.数值积分的MATLAB实现方法: 1.变步长辛普生法(quad)法: (1)调用格式: [I,n]=quad('fname',a,b,tol,trace); fname是被积函数: ...

  4. XML基础总结2

    在上篇的博客中,我们系统的介绍了一下xml与html之间的异同以及一部分xml的特性或者说是优点,接下来,我们就xml文档的一些语法规则具体向大家阐述一下: 1.xml文档形成了一种"树结构 ...

  5. Excel文件导入SQL Server数据库表

    --office 2003--如果接受数据导入的表已经存在insert into DemoTable select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0 ...

  6. 内容提供者Content Provider

    *读取联系人 StringBuilder sb = new StringBuilder(); // 1:得到中间人. ContentResolver resolver = getContentReso ...

  7. C#抽象类及其方法的学习

    在C#中使用关键字 abstract 来定义抽象类和抽象方法. 不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例. "一个包含一个或多个纯虚函数的类 ...

  8. DevExpress DXperience 的ASPxFilterControl 不显示 Like 菜单的方法

    当使用Linq 作为数据源时,如果使用 ASPxFilterControl 的 Like 菜单筛选数据,就会出现以下错误 LINQ to Entities does not recognize the ...

  9. winrt 上的翻书特效组件 源码分享 转载请说明

    http://blog.csdn.net/wangrenzhu2011/article/details/10207413 (转) [TemplatePart(Name = A_PARTNAME, Ty ...

  10. [Algorithms(Princeton)] Week1 - Percolation

    public class Percolation { private boolean[] openSites; private int gridN; private WeightedQuickUnio ...