使用jQuery怎么实现一个适用于移动端的跑马灯抽奖特效?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
jquery是一个简洁而快速的JavaScript库,它具有独特的链式语法和短小清晰的多功能接口、高效灵活的css选择器,并且可对CSS选择器进行扩展、拥有便捷的插件扩展机制和丰富的插件,是继Prototype之后又一个优秀的JavaScript代码库,能够用于简化事件处理、HTML文档遍历、Ajax交互和动画,以便快速开发网站。
<div class="gift_div"> <div class="gift gift1">奖品1</div> <div class="gift gift2">奖品2</div> <div class="gift gift3">奖品3</div> <div class="gift gift4">奖品4</div> <div class="gift gift5">奖品5</div> <div class="gift gift6">奖品6</div> <div class="gift gift7">奖品7</div> <div class="gift gift8">奖品8</div> <div class="start">开始抽奖</div> </div>
按照代码常规,奖品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随机数,这个是随机让用户抽奖随机中哪一个,要是需要固定比例的下一节出。
完整代码如下:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,height=device-height,initial-scale=1,minimum-scale=1,user-scalable=no"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title></title> <script src="js/rem.js" type="text/javascript" charset="utf-8"></script> <link rel="stylesheet" type="text/css" href="css/choujiang.css" rel="external nofollow" /> <style type="text/css"> </style> </head> <body> <div class="light"> <div class="num"> 您今日抽奖机会还有<span class="red">3</span>次 </div> <div class="gift_div"> <div class="gift gift1">奖品1</div> <div class="gift gift2">奖品2</div> <div class="gift gift3">奖品3</div> <div class="gift gift4">奖品4</div> <div class="gift gift5">奖品5</div> <div class="gift gift6">奖品6</div> <div class="gift gift7">奖品7</div> <div class="gift gift8">奖品8</div> <div class="start">开始抽奖</div> </div> </div> </body> <script src="js/jquery-2.1.1.min.js" type="text/javascript" charset="utf-8"></script> <script src="js/choujiang.js" type="text/javascript" charset="utf-8"></script> </html>
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'); } });
关于使用jQuery怎么实现一个适用于移动端的跑马灯抽奖特效问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。