1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 手机端html跑马灯效果 jQuery实现适用于移动端的跑马灯抽奖特效示例

手机端html跑马灯效果 jQuery实现适用于移动端的跑马灯抽奖特效示例

时间:2018-12-16 00:34:17

相关推荐

手机端html跑马灯效果 jQuery实现适用于移动端的跑马灯抽奖特效示例

本文实例讲述了jQuery实现适用于移动端的跑马灯抽奖特效。分享给大家供大家参考,具体如下:

图片全部隐私处理

跑马灯抽奖特效难点一:奖品位置排放,如下图

奖品1 奖品2 奖品3 奖品4 奖品5 奖品6 奖品7 奖品8 开始抽奖

按照代码常规,奖品1,2,3,4是顺序排列,在这里,使用了定位将他们绕成一个圈。

难点二:速度控制,其实这个没啥,多尝试几个速度就行;

js代码重点就是定时器的循环,代码如下:

$(function() {

var speed = 150, //跑马灯速度

click = true, //阻止多次点击

img_index = -1, //阴影停在当前奖品的序号

circle = 0, //跑马灯跑了多少次

maths,//取一个随机数;

num=$('.red').text();

$('.start').click(function() {

if(click&&num>0) {

click = false;

maths = parseInt((Math.random() * 10) + 80);

light();

} else {

return false;

}

});

function light() {

img();

circle++;

var timer = setTimeout(light, speed);

if(circle > 0 && circle < 5) {

speed -= 10;

} else if(circle > 5 && circle < 20) {

speed -= 5;

} else if(circle > 50 && circle < 70) {

speed += 5

} else if(circle > 70 && circle < maths) {

speed += 10

} else if(circle == maths) {

var text = $('.gift_div .gift:eq(' + img_index + ')').text();

console.log(circle + maths, 'aaa', img_index, $('.gift_div .gift:eq(' + img_index + ')').text())

clearTimeout(timer);

setTimeout(function() {

alert('恭喜获得' + text)

}, 300)

click = true;

speed = 150;

circle = 0;

img_index = -1;

num--;

$('.red').text(num)

}

}

function img() {

if(img_index < 7) {

img_index++;

} else if(img_index == 7) {

img_index = 0;

}

$('.gift_div .gift:eq(' + img_index + ')').addClass('gift_b').siblings().removeClass('gift_b');

}

});

上面的代码,从最上面定义我们所需的各种参数(都已做了注解);

接着点击开始抽奖,首先,在抽奖执行以前我们要先判断让一次的抽奖是否已经结束并且今天是否还有剩余的抽奖次数,当这两个条件都满足,开始执行抽奖light(),同时,在开始抽奖之前,将click这个参数置为false,避免抽奖还没结束用户就开始下一次的抽奖;

在抽奖light()函数里面调用抽奖阴影不停移动的函数img(),接着,给一个定时器var timer = setTimeout(light, speed);这个定时器里面的light就是根据speed的速度来不停的调用light()这个函数本身(城会玩),然后我们在下面根据这个抽奖阴影移动的次数不停地改变speed来改变light的调用速度从而改变阴影的移动速度(这个速度自己看数值怎么舒服怎么改吧);

最后在这个light()函数的最后要做定时器的清除,抽奖总要抽到东西的呀,不暂停怎么抽。。暂停以后要重置开始抽奖之前的参数。

上面有一个maths随机数,这个是随机让用户抽奖随机中哪一个,要是需要固定比例的下一节出。

完整代码如下:

您今日抽奖机会还有3次

奖品1 奖品2 奖品3 奖品4 奖品5 奖品6 奖品7 奖品8 开始抽奖

css部分:

* {

margin: 0;

padding: 0;

}

.light {

width: 100%;

height: 7.6rem;

background: #BD1D25;

padding: .2rem;

box-sizing: border-box;

font-size: .24rem;

}

.light .gift_div {

width: 100%;

height: 6.4rem;

background: #139365;

border-radius: .1rem;

position: relative;

padding: .05rem .5%;

box-sizing: border-box;

margin-top: .2rem;

}

.gift_div>div {

position: absolute;

width: 32%;

height: 2rem;

margin: .05rem .5%;

background: #E6F0EC;

border-radius: .06rem;

}

.gift2,

.gift6,

.start{

left: 33.5%;

}

.gift3,

.gift4,

.gift5{

right: .5%;

}

.gift4,

.gift8,

.start{

top: 2.15rem;

}

.gift5,

.gift6,

.gift7{

bottom: .05rem;

}

.gift_div .start{

background: #FDB827;

text-align: center;

line-height: 2rem;

color: #FF001F;

}

.red{

color: red;

}

.num{

text-align: center;

font-size: .32rem;

line-height: .6rem;

background: #E6EFEC;

border-radius: .6rem;

}

.gift_b:after{

position: absolute;

width: 100%;

height: 100%;

background: rgba(0,0,0,.6);

content: '';

left: 0;

}

js部分:

$(function() {

var speed = 150, //跑马灯速度

click = true, //阻止多次点击

img_index = -1, //阴影停在当前奖品的序号

circle = 0, //跑马灯跑了多少次

maths,//取一个随机数;

num=$('.red').text();

$('.start').click(function() {

if(click&&num>0) {

click = false;

maths = parseInt((Math.random() * 10) + 80);

light();

} else {

return false;

}

});

function light() {

img();

circle++;

var timer = setTimeout(light, speed);

if(circle > 0 && circle < 5) {

speed -= 10;

} else if(circle > 5 && circle < 20) {

speed -= 5;

} else if(circle > 50 && circle < 70) {

speed += 5

} else if(circle > 70 && circle < maths) {

speed += 10

} else if(circle == maths) {

var text = $('.gift_div .gift:eq(' + img_index + ')').text();

console.log(circle + maths, 'aaa', img_index, $('.gift_div .gift:eq(' + img_index + ')').text())

clearTimeout(timer);

setTimeout(function() {

alert('恭喜获得' + text)

}, 300)

click = true;

speed = 150;

circle = 0;

img_index = -1;

num--;

$('.red').text(num)

}

}

function img() {

if(img_index < 7) {

img_index++;

} else if(img_index == 7) {

img_index = 0;

}

$('.gift_div .gift:eq(' + img_index + ')').addClass('gift_b').siblings().removeClass('gift_b');

}

});

html里面引用的rem.js是我自己封装的,让100px=1rem;

PS:这里推荐两款相关在线HTML/CSS/JS运行工具如下:

希望本文所述对大家jQuery程序设计有所帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。