JavaScript實(shí)現(xiàn)抽獎(jiǎng)器效果
本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)抽獎(jiǎng)器效果的具體代碼,供大家參考,具體內(nèi)容如下
這次實(shí)現(xiàn)的效果如下圖:
所實(shí)現(xiàn)的功能是:當(dāng)每次點(diǎn)擊中間的抽獎(jiǎng)按鈕時(shí),會(huì)隨機(jī)選擇一個(gè)盒子作為抽獎(jiǎng)的結(jié)果。
那我們要如何實(shí)現(xiàn)抽獎(jiǎng)的功能呢?
其實(shí)很簡(jiǎn)單,首先用html和css做出整體的框架,然后用js在中間按鈕的onclick
函數(shù)中設(shè)置定時(shí)器+隨機(jī)改變某一盒子的背景顏色就可以了。 下面我們來(lái)討論一下細(xì)節(jié)的方面:
1、設(shè)計(jì)整體框架時(shí),我們需要為每個(gè)盒子設(shè)置邊框,這時(shí)會(huì)發(fā)現(xiàn)邊框會(huì)出現(xiàn)重疊問(wèn)題,導(dǎo)致邊框變厚,解決的方法是:設(shè)置margin-right
和margin-bottom
為負(fù)值(值等于邊框值)。
2、.在js中設(shè)置抽獎(jiǎng)功能時(shí),我們可以通過(guò)設(shè)置一個(gè)定時(shí)器A,在其中隨機(jī)改變某一盒子的background-color
代表選中。為使抽獎(jiǎng)可以在某一時(shí)刻暫停,我們可以設(shè)置定時(shí)器B,在某一時(shí)刻將定時(shí)器A關(guān)閉。
3、隨機(jī)改變是怎么做到的呢? 首先調(diào)用document.getElementsByTagName
獲取所有盒子,然后利用Math.random()*盒子的數(shù)目
,獲取某一盒子下標(biāo),改變其背景顏色。
很顯然定時(shí)器A是setInterval
,定時(shí)器B是setTimeout
。
而且在A中改變某一盒子背景顏色時(shí),要將上一個(gè)被改變顏色的盒子還原為原來(lái)的顏色,我們需要記錄上次被改變背景顏色的盒子。
具體見(jiàn)下面代碼:
<!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>樂(lè)事</span> <div id="main">抽獎(jiǎng)</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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js和html5實(shí)現(xiàn)手機(jī)端刮刮卡抽獎(jiǎng)效果完美兼容android/IOS
- js輪盤(pán)抽獎(jiǎng)實(shí)例分析
- js抽獎(jiǎng)實(shí)現(xiàn)隨機(jī)抽獎(jiǎng)代碼效果
- jquery.rotate.js實(shí)現(xiàn)可選抽獎(jiǎng)次數(shù)和中獎(jiǎng)內(nèi)容的轉(zhuǎn)盤(pán)抽獎(jiǎng)代碼
- js簡(jiǎn)單抽獎(jiǎng)代碼
- js實(shí)現(xiàn)簡(jiǎn)單隨機(jī)抽獎(jiǎng)的方法
- js實(shí)現(xiàn)大轉(zhuǎn)盤(pán)抽獎(jiǎng)游戲?qū)嵗?/a>
- 原生JS實(shí)現(xiàn)九宮格抽獎(jiǎng)效果
- javascript 隨機(jī)抽獎(jiǎng)程序代碼
- JS模擬抽獎(jiǎng)序效果實(shí)現(xiàn)代碼
相關(guān)文章
Bootstrap和Java分頁(yè)實(shí)例第二篇
這篇文章主要為大家詳細(xì)介紹了Bootstrap和Java分頁(yè)實(shí)例第二篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12詳解如何編寫(xiě)一個(gè)Typescript的類(lèi)型聲明文件
我們知道TypeScript根據(jù)類(lèi)型聲明進(jìn)行類(lèi)型檢查,但有些情況可能沒(méi)有類(lèi)型聲明,這個(gè)時(shí)候就需要我們自己寫(xiě)一個(gè),下面小編就來(lái)和大家聊聊如果寫(xiě)一個(gè)Typescript的類(lèi)型聲明文件呢2023-06-06js實(shí)現(xiàn)3D粒子酷炫動(dòng)態(tài)旋轉(zhuǎn)特效
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)3D粒子酷炫動(dòng)態(tài)旋轉(zhuǎn)特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09JavaScript知識(shí)點(diǎn)總結(jié)(四)之邏輯OR運(yùn)算符詳解
這篇文章主要介紹了JavaScript知識(shí)點(diǎn)總結(jié)(四)之邏輯OR運(yùn)算符詳解的相關(guān)資料,在JavaScript中,邏輯OR運(yùn)算符用||表示。本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起看看吧2016-05-05JavaScript中的property和attribute介紹
JavaScript中的property和attribute介紹,需要的朋友可以參考下。2011-12-12利用XMLHTTP傳遞參數(shù)在另一頁(yè)面執(zhí)行并刷新本頁(yè)
利用XMLHTTP傳遞參數(shù)在另一頁(yè)面執(zhí)行并刷新本頁(yè)...2006-10-10