国庆出去转了一圈,回来及时把以前写的一些有用的在这儿记录一下

--------------------------------------------我是分割线------------------------------------------------------------

先说说JQuery封装的专门用来处理九宫格抽奖的框架JQuery.latest.min.js,文件地址如下

https://files.cnblogs.com/files/teersky/JQuery.latest.min.js

  用这个框架问题就很简单了,网上例子很多我就不做赘述,给大家发一个地址以供参考

http://www.cnblogs.com/starof/p/4933907.html

  我要说的是用原生的思想写一个九宫格抽奖,效果图如下

注: 图片是随便放的,爬自豆瓣音乐

先放HTML代码

<div id="container">
<ul id="oUl">
<li><img src="data:images/1.jpg"/><div class="mask"></div></li>
<li><img src="data:images/2.jpg"/><div class="mask"></div></li>
<li><img src="data:images/3.png"/><div class="mask"></div></li>
<li><img src="data:images/4.jpg"/><div class="mask"></div></li>
<a>开始</a>
<li><img src="data:images/5.jpg"/><div class="mask"></div></li>
<li><img src="data:images/6.jpg"/><div class="mask"></div></li>
<li><img src="data:images/7.jpg"/><div class="mask"></div></li>
<li><img src="data:images/8.jpg"/><div class="mask"></div></li>
</ul>
<div id="page"></div>
</div>

  img标签是放图片的地方,而mask是放当标签滚动起来是标记的地方,

  a标签是开始按钮

  div.page是放获奖信息展示的地方  

CSS代码如下:

* {
margin: ;
padding: ;
}
#container {
width: 310px;
height: 310px;
margin: 30px auto;
} #oUl {
width: 310px;
height: 310px;
list-style: none;
}
#oUl li,
#oUl a {
width: 100px;
height: 100px;
border: 1px solid #;
float: left;
text-align: center;
line-height: 100px;
position: relative;
}
#oUl li img{
display: block;
width: %;
height: %;
}
#oUl li .mask{
width: %;
height: %;
position: absolute;
left:;
top:;
background: url(images/mask.png) no-repeat;
background-size: cover;
display: none;
}
#oUl a:hover {
cursor: pointer;
color: orange;
font-size: 18px;
}
#oUl .active .mask{
display: block;
}
#page {
line-height: 32px;
color: #9a9a9a;
text-align: center;
position:absolute;
left: %;
top: 50px;
width: 300px;
height: 50px;
margin-left: -150px;
display: none;
background: #;
color: #fff;
}

下面就是最好玩的Js部分了,

var container = document.getElementById('container'),
li = container.getElementsByTagName('li'),
aa = container.getElementsByTagName('a')[0],
page = document.getElementById('page'),
timer = null;
bReady = false; var order = [0,1,2,4,7,6,5,3]; //这个是放标签滚动次序的地方 //随机函数,用于在九宫格跑起来之前就得到要随机到的地方
function random(n, m) {
return parseInt((m - n) * Math.random() + n);
}

  

function start(num,str) {
var i = 0; //此处定义一个i执行效果类似于for循环,不过for循环执行太快,所以不能用
var t =60; //标记转动速度,也就是每过60毫秒标记重新改变一次
var round = 10; //表示标记转动的圈数
var rNum = round*8; //表示标记转动的次数 timer = setTimeout(setFreq, t);
function setFreq() {
        //首先标记每次刷新就让li所有的class都为空
for(var j = 0; j < li.length; j++) {
li[j].className = '';
}
//通过i余8得到此刻在order数组中的数字
var ord = order[i%li.length];
//该数字就是标记应该出现的位置(我不知道JQuery框架是不是这样处理的)
li[ord].className = "active";
i++; //i自增
if(i<rNum-8){
          //当i的数量小于转rNum-8次的数量,t不变
timer = setTimeout(setFreq, t);
}else if(i>= rNum-8 && i< rNum+num){
//否则让t每次增加li标签位置序列乘以5,此时计时器运行速度会降低,同时标签刷新速度也会降低
t+=(i-rNum+8)*5;
timer = setTimeout(setFreq, t);
}
if( i >= rNum+num){
          //当i大于转rNum加随机出来的数字次计时器结束,出现信息提示框提示中奖信息
page.innerHTML="恭喜你中了" + num + str +"" ;
var timer2 = null;
timer2 = setTimeout(function(){
page.style.display="block";
clearTimeout(timer2);
},1000);
bReady = false; //当计时器结束后让a标签变为可点击状态
clearTimeout(timer);
} }
}

  当a标签点击后执行代码如下

var num = 0;    //先定义一个num用来存放得到的随机函数,也可以用来存放后台传来的随机数,前台写这种代码安全性不高
aa.onclick = function() {
/*'1-8'*/
if(bReady) return false; //当bReady为true时a标签为不可点状态
page.style.display="none"; //这个是处理再次点击时让page框消失的代码
bReady = true; //当点击之后就让bReady为false,即a不可点状态
num = random(1,9) //随机得到一个数字
start(num,"000万现金大礼包"); //执行函数start,num为上面的随机数,后面的字符串为在page信息框中展示的信息,可以随便更改
}

  完整项目地址如下,有兴趣的朋友可以瞅瞅

https://files.cnblogs.com/files/teersky/%E5%8E%9F%E7%94%9F%E4%B9%9D%E5%AE%AB%E6%A0%BC%E6%8A%BD%E5%A5%96.rar

---------------------------------------------------------------我是分割线--------------------------------------------------------------------------------

小弟不才,各位仁兄如有更好的方法欢迎留言斧正。。。

Js写九宫格抽奖的更多相关文章

  1. php+lottery.js制作九宫格抽奖实例

    php+lottery.js制作九宫格抽奖实例,本抽奖功能效果表现好,定制方便简单,新手学习跟直接拿来用都非常不错,兼容IE.火狐.谷歌等浏览器. 引入抽奖插件lottery.js <scrip ...

  2. JS:九宫格抽奖转盘实例

    工作需要,所以做了个抽奖转盘的插件,当然这里只做最简单的演示.可以用于取代一些flash抽奖程序. 机制说明: 1.通过定义lottery-unit来控制节点的个数及索引: 2.通过设置lottery ...

  3. 【Vue.js游戏机实战】- Vue.js实现九宫格水果机抽奖游戏总结

    大家好!先上图看看本次案例的整体效果. 完整版实战课程附源码:[Vue.js游戏机实战]- Vue.js实现九宫格水果机抽奖 实现思路: Vue component实现九宫格水果机组件,可以嵌套到任意 ...

  4. PHP+Ajax微信手机端九宫格抽奖实例

    PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现.支持可以设置中奖概率等. 奖品列表 <div class="lottery ...

  5. Node.js写文件的三种方法

    Node.js写文件的三种方式: 1.通过管道流写文件 采用管道传输二进制流,可以实现自动管理流,可写流不必当心可读流流的过快而崩溃,适合大小文件传输(推荐) var readStream = fs. ...

  6. 用JS写了一个打字游戏,反正我是通不了关

    今天想写个简单的游戏, 打字游戏好像都没写过, 那么就写打字游戏吧, gamePad包含了关卡的信息, 可以用来调整给个关卡字符下落的速度: getRandom函数会返回一个字符对象, 这个对象包含了 ...

  7. JS写小游戏(一):游戏框架

    前言 前一阵发现一个不错的网站,都是一些用html5+css+js写的小游戏,于是打算学习一番,写下这个系列博客主要是为了加深理解,当然也有一些个人感悟,如果英文好可以直接Click Here. 概述 ...

  8. 去它的h5,我还是用js写原生跨平台app吧

    智能手机功能越来越强大,已经在逐渐替代电脑的作用.百度.腾讯.阿里的移动端日活数也在逐步的赶上甚至超越电脑端用户.叫喊着“mobile first”的公司越来越多,App开发者应运而生,且队伍日趋庞大 ...

  9. 原生js写的贪吃蛇网页版游戏特效

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <bo ...

随机推荐

  1. 如何使用office2016发布CSDN博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  2. Spark 0.9.1和Shark 0.9.1分布式安装指南

    目录 目录 1 1. 约定 1 2. 安装Scala 1 2.1. 下载 2 2.2. 安装 2 2.3. 设置环境变量 2 3. 安装Spark 2 3.1. 部署 2 3.2. 下载 3 3.3. ...

  3. 在Mac OS下配置PHP开发环境

    实在厌倦了windows无缘无故的宕机.病毒了吗,哈哈哈,这个跟我都没什么关系.准备使用下现如今牛X到不行的云平台没有办法只好研究下PHP. 现在的云平台支持的语言只有PHP.Java和Python. ...

  4. opencv——pcb上寻找mark点(拟合椭圆的方法)

    #include "stdafx.h" // FitCircle.cpp : 定义控制台应用程序的入口 #include "cv.h" #include &qu ...

  5. linux命令の删除文件和文件夹 复制粘贴文件和文件夹

    声明:此博文来自百度经验http://jingyan.baidu.com/article/642c9d34dcba80644a46f72d.html,谢谢分享! linux删除目录很简单,很多人还是习 ...

  6. c# 跨线程访问窗体UI

    定义个结构体用于存储线程中传递的参数信息 struct ImgInfo { public string url; public string path; }; 参数传递到线程中 ImgInfo img ...

  7. C#图片缩放平移 —— 从功能分析到编码实现

    序 一直都是在看别人的博客,查到想要的,看完后把页面一关就万事大吉了,没啥感觉:直到后来遇到了同样的问题,总想不起来咋弄,关键是还查不到以前看过的,郁闷!现在想想,还是“好记性不如烂笔头”啊,自己弄过 ...

  8. 把windows电脑变成路由器使用

    实用小技巧1 把windows电脑变成路由器使用 适用对象: windows7.windows8的笔记本电脑或者有无线网卡的台式电脑 网络要求: CMCC-EDU和家里拨号上网的都可以,但是电信的校园 ...

  9. .net core i上 K8S(三)Yaml文件运行.netcore程序

    上一章我们通过kubectl run简单运行了一个.netcore网站,但实际的开发中,我们都是通过yaml来实现的. 1.编写yaml文件 关于yaml文件的格式在此就不多描述了,不熟悉的可以去网上 ...

  10. 如何使用jQuery写一个jQuery插件

    jQuery插件其实是前端框架的思维,构成一个框架,个人认为必须满足以下几个基础条件:1. 可重用,2. 兼容性,3. 维护方便,虽说现在有很多比较成熟的前端框架,但是也有部分存在配置麻烦,学习成本大 ...