JavaScript實(shí)現(xiàn)抽獎器效果
本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)抽獎器效果的具體代碼,供大家參考,具體內(nèi)容如下
這次實(shí)現(xiàn)的效果如下圖:

所實(shí)現(xiàn)的功能是:當(dāng)每次點(diǎn)擊中間的抽獎按鈕時,會隨機(jī)選擇一個盒子作為抽獎的結(jié)果。
那我們要如何實(shí)現(xiàn)抽獎的功能呢?
其實(shí)很簡單,首先用html和css做出整體的框架,然后用js在中間按鈕的onclick函數(shù)中設(shè)置定時器+隨機(jī)改變某一盒子的背景顏色就可以了。 下面我們來討論一下細(xì)節(jié)的方面:
1、設(shè)計(jì)整體框架時,我們需要為每個盒子設(shè)置邊框,這時會發(fā)現(xiàn)邊框會出現(xiàn)重疊問題,導(dǎo)致邊框變厚,解決的方法是:設(shè)置margin-right和margin-bottom為負(fù)值(值等于邊框值)。
2、.在js中設(shè)置抽獎功能時,我們可以通過設(shè)置一個定時器A,在其中隨機(jī)改變某一盒子的background-color代表選中。為使抽獎可以在某一時刻暫停,我們可以設(shè)置定時器B,在某一時刻將定時器A關(guān)閉。
3、隨機(jī)改變是怎么做到的呢? 首先調(diào)用document.getElementsByTagName獲取所有盒子,然后利用Math.random()*盒子的數(shù)目,獲取某一盒子下標(biāo),改變其背景顏色。
很顯然定時器A是setInterval,定時器B是setTimeout。
而且在A中改變某一盒子背景顏色時,要將上一個被改變顏色的盒子還原為原來的顏色,我們需要記錄上次被改變背景顏色的盒子。
具體見下面代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin:0;
padding: 0;
}
.container{
width: 400px;
height: 400px;
margin:50px auto;
}
span,#main{
display: block;
width: 100px;
height: 100px;
border:2px pink solid;
float:left;
margin-left:-2px;
margin-bottom:-2px;
text-align: center;
line-height: 100px;
border-radius: 16px;
box-shadow: 2px 2px 3px rgba(226, 86, 109, 0.459);
}
#main{
background-color: rgba(243, 97, 126, 0.651);
cursor: pointer;
}
</style>
</head>
<body>
<div class="container">
<div>
<span>可視化</span>
<span>圖形學(xué)</span>
<span>操作系統(tǒng)</span>
</div>
<div>
<span>樂事</span>
<div id="main">抽獎</div>
<span>大白兔</span>
</div>
<div>
<span>檸檬水</span>
<span>黑咖啡</span>
<span>芋泥奶茶</span>
</div>
</div>
<script>
let main=document.getElementById("main");
let box=document.getElementsByTagName("span");
var num=null;
main.onclick=function(){
let tem=setInterval(() => {
if(num!==null){
box[num].style.backgroundColor="white";
}
num=parseInt(Math.random()*8);
box[num].style.backgroundColor="rgba(243, 97, 126, 0.651)";
console.log(num);
}, 120);
setTimeout(() => {
clearInterval(tem)
}, 3000);
}
</script>
</body>
</html>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js和html5實(shí)現(xiàn)手機(jī)端刮刮卡抽獎效果完美兼容android/IOS
- js輪盤抽獎實(shí)例分析
- js抽獎實(shí)現(xiàn)隨機(jī)抽獎代碼效果
- jquery.rotate.js實(shí)現(xiàn)可選抽獎次數(shù)和中獎內(nèi)容的轉(zhuǎn)盤抽獎代碼
- js簡單抽獎代碼
- js實(shí)現(xiàn)簡單隨機(jī)抽獎的方法
- js實(shí)現(xiàn)大轉(zhuǎn)盤抽獎游戲?qū)嵗?/a>
- 原生JS實(shí)現(xiàn)九宮格抽獎效果
- javascript 隨機(jī)抽獎程序代碼
- JS模擬抽獎序效果實(shí)現(xiàn)代碼
相關(guān)文章
js實(shí)現(xiàn)3D粒子酷炫動態(tài)旋轉(zhuǎn)特效
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)3D粒子酷炫動態(tài)旋轉(zhuǎn)特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-09-09
JavaScript知識點(diǎn)總結(jié)(四)之邏輯OR運(yùn)算符詳解
這篇文章主要介紹了JavaScript知識點(diǎn)總結(jié)(四)之邏輯OR運(yùn)算符詳解的相關(guān)資料,在JavaScript中,邏輯OR運(yùn)算符用||表示。本文介紹的非常詳細(xì),具有參考借鑒價值,感興趣的朋友一起看看吧2016-05-05
JavaScript中的property和attribute介紹
JavaScript中的property和attribute介紹,需要的朋友可以參考下。2011-12-12
利用XMLHTTP傳遞參數(shù)在另一頁面執(zhí)行并刷新本頁
利用XMLHTTP傳遞參數(shù)在另一頁面執(zhí)行并刷新本頁...2006-10-10

