最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用JS簡單實現(xiàn)九宮格抽獎的示例代碼

 更新時間:2023年12月21日 08:32:35   作者:sherlockkid7  
在網(wǎng)上經(jīng)??匆娨恍┏楠勴撁?也玩過不同類型的抽獎活動,但是一直沒有做過抽獎的功能,所以今天來實現(xiàn)一個簡單的九宮格抽獎功能,文中有詳細的代碼示例供大家參考,感興趣的朋友可以自己動手嘗試一下

效果展示

頁面布局

九宮格抽獎的布局基本是由九個方塊組成,一般有中間是一個開始抽獎按鈕,四周的方塊是不同的獎項;也有像掘金這樣的九個都是獎項,下面再加個抽獎按鈕;這里實現(xiàn)的是第一種類型

頁面主要包含一個標題和轉(zhuǎn)盤,轉(zhuǎn)盤包含8個獎品子元素和一個開始抽獎按鈕,使用flex布局,排列元素。

8個獎品子元素自定義了一個屬性data-order,表示開始抽獎的時候順時針方向上當前自己位置的索引

具體實現(xiàn)

1. 定義獎品數(shù)組prize_list

模擬出8個不同的獎品數(shù)據(jù)。循環(huán)獎品數(shù)組,將對應位置的獎品展示到頁面

獲取所有的獎品元素,前三個獎品數(shù)據(jù)直接展示到對應索引的獎品元素,后面的需要根據(jù)自定義屬性data-order指定當前數(shù)據(jù)展示在哪個位置(順時針方向指定位置)

2. 創(chuàng)建函數(shù)runCircle()

用于移除當前獎品元素的選中樣式,同時自增當前獎品的索引值,再加上選中樣式。當獎品索引值大于7時,獎品索引值需要變成0

3. 創(chuàng)建抽獎函數(shù)controll(),處理轉(zhuǎn)盤抽獎的運行邏輯

在該函數(shù)中自增抽獎轉(zhuǎn)動次數(shù),然后調(diào)用 runCircle 函數(shù)來改變當前選中的獎品獎項。如果抽獎的次數(shù)超過了 minimum_jumps + 10 并且當前選中的獎項就是獎品,那么就會停止抽獎,并在頁面上顯示一個消息,告訴用戶獲得了哪個獎品。否則,就根據(jù)抽獎的次數(shù)來改變轉(zhuǎn)盤轉(zhuǎn)動的速度。

當抽獎轉(zhuǎn)動次數(shù)等于抽獎開始的最小抽獎次數(shù)時,獎品的結(jié)果值prizeId在0-8 的數(shù)值中隨機取得,決定出獎品的位置

const total_items = 8 //獎品的總數(shù)
let prizeId = -1 // 獎品的結(jié)果,初始值為-1,表示還沒有開始抽獎
let current_index = -1 //當前選中獎項索引
const minimum_jumps = 30 // 超過該數(shù)字進入抽獎
let jumps = 0 //抽獎轉(zhuǎn)動次數(shù),初始值為0
let speed = 100  //轉(zhuǎn)動速度
let timer = 0   
let disabled = false
// 獎品抽獎
function controll() {
  jumps += 1
  runCircle()
  // 抽到獎品停止游戲
  if (jumps > minimum_jumps + 10 && prizeId === current_index) {
    clearTimeout(timer)
    disabled = false
    const message = document.createElement('p')
    message.className = 'message'
    message.innerHTML = `恭喜你獲得:${prize_list[current_index].name}!`
    container.appendChild(message)
    prizeId = -1
    jumps = 0
  } else {
      // 加快
    if (jumps < minimum_jumps) {
      speed -= 5
      // 決定獎品的位置
    } else if (jumps === minimum_jumps) {
      prizeId = generatePrizeNumber()
    } else {
      // 下一個就是獎品時放慢速度
      if ((jumps > minimum_jumps + 10) && prizeId === (current_index + 1)) {
        speed += 600
      } else {
        speed += 20 // 減速
      }
    }
    if (speed < 40) {
      speed = 40
    }
    timer = setTimeout(controll, speed)
  }
}
function init() {
  jumps = 0
  speed = 100
  prizeId = -1
  controll()
}

4. 添加開始抽獎按鈕的點擊事件,執(zhí)行抽獎函數(shù)開始抽獎

在已經(jīng)抽獎的情況下,改變disabled變量為真,防止重復執(zhí)行抽獎

根據(jù)以上步驟就可以實現(xiàn)一個簡單的九宮格抽獎了

到此這篇關于用JS簡單實現(xiàn)九宮格抽獎的示例代碼的文章就介紹到這了,更多相關JS實現(xiàn)九宮格抽獎內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • js仿微博動態(tài)欄功能

    js仿微博動態(tài)欄功能

    本文主要介紹了js仿微博動態(tài)欄功能的示例代碼,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 深入理解MVC中的時間js格式化

    深入理解MVC中的時間js格式化

    下面小編就為大家?guī)硪黄钊肜斫釳VC中的時間js格式化。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • js下通過getList函數(shù)實現(xiàn)分頁效果的代碼

    js下通過getList函數(shù)實現(xiàn)分頁效果的代碼

    js下通過getList函數(shù)實現(xiàn)分頁效果的代碼,需要通過js分頁的朋友可以參考下。
    2010-09-09
  • JS選項卡動態(tài)替換banner圖片路徑的方法

    JS選項卡動態(tài)替換banner圖片路徑的方法

    這篇文章主要介紹了JS選項卡動態(tài)替換banner圖片路徑的方法,涉及javascript操作文件css樣式的相關技巧,非常簡單實用,需要的朋友可以參考下
    2015-05-05
  • 使用20行JS代碼實現(xiàn)屏幕錄制功能

    使用20行JS代碼實現(xiàn)屏幕錄制功能

    在開發(fā)中可能有遇到過屏幕錄制的需求,無論是教學、演示還是游戲錄制,都需要通過屏幕錄制來記錄和分享內(nèi)容,MediaRecorder?是一種強大的技術,可以在瀏覽器端實現(xiàn)屏幕錄制功能,本文將介紹如何使用JS?MediaRecorder?實現(xiàn)屏幕錄制,需要的朋友可以參考下
    2023-11-11
  • jquery和js顯示和隱藏div的幾種方法對比整理

    jquery和js顯示和隱藏div的幾種方法對比整理

    jQuery是基于JavaScript的一種框架。jQuery封裝js和Ajax的功能,提供函數(shù)接口,簡化js的操作。使用jquery來顯示或者隱藏div真的很方便。
    2023-02-02
  • JavaScript實現(xiàn)解析INI文件內(nèi)容的方法

    JavaScript實現(xiàn)解析INI文件內(nèi)容的方法

    這篇文章主要介紹了JavaScript實現(xiàn)解析INI文件內(nèi)容的方法,結(jié)合實例形式分析了javascript通過自定義函數(shù)實現(xiàn)針對ini文件解析操作的相關處理技巧,需要的朋友可以參考下
    2016-11-11
  • async/await實現(xiàn)Promise.acll()簡介

    async/await實現(xiàn)Promise.acll()簡介

    Promise.all() 方法接收一個 promise 的 iterable 類型的輸入,并且只返回一個Promise實例,并且輸入的所有 promise 的 resolve 回調(diào)的結(jié)果是一個數(shù)組,這篇文章主要介紹了async/await實現(xiàn)Promise.acll()簡介,需要的朋友可以參考下
    2022-11-11
  • javascript中CheckBox全選終極方案

    javascript中CheckBox全選終極方案

    在javascript頁面中實現(xiàn)CheckBox或者Radio的選中狀態(tài)是一件很容易的事情,下面我們來給大家展示下在asp.net中使用javascript中CheckBox全選終極方案,有需要的小伙伴可以參考下。
    2015-05-05
  • html+javascript+bootstrap實現(xiàn)層級多選框全層全選和多選功能

    html+javascript+bootstrap實現(xiàn)層級多選框全層全選和多選功能

    想做一個先按層級排序并可以多選的功能,首先傾向于用多層標簽式的,直接選定加在文本域里,接下來通過本文給大家介紹html+javascript+bootstrap實現(xiàn)層級多選框全層全選和多選功能,需要的朋友參考下
    2017-03-03

最新評論

临城县| 瑞昌市| 寿光市| 武汉市| 丰顺县| 黄大仙区| 玉龙| 阳信县| 黔江区| 和静县| 霍州市| 新建县| 保定市| 内黄县| 阿城市| 平昌县| 邯郸市| 陆川县| 合肥市| 九龙坡区| 垦利县| 荥经县| 青冈县| 中卫市| 板桥市| 南部县| 甘孜县| 富阳市| 江达县| 彰化县| 聂拉木县| 苏州市| 平和县| 河北区| 榕江县| 江陵县| 芒康县| 思南县| 清远市| 潢川县| 灵台县|