欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue實現(xiàn)抽獎效果Demo

 更新時間:2024年01月03日 16:15:17   作者:hjy170314  
這篇文章主要介紹了vue實現(xiàn)抽獎效果Demo,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

vue抽獎效果Demo

只做了簡單的抽獎效果,沒有給出彈框和中獎提示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="./vue.js"></script>
    <link rel="stylesheet" href="./index.css" rel="external nofollow" >
    <title>九宮格抽獎案例(PC端)</title>
</head>
<body>
    <div  id="app">
        <div class="lotteryBox" >
            <div v-for='(item,key) in lotteryData' :key="item.id" :class="key === index?'active':''">
                <img :src=item.imgUrl alt="" class="itemImg">
                <p>{{item.text}}</p>
            </div>
            
        
        </div>
        <div class="lotteryBtn" @click='lotteryBtn'>
            立即抽獎
        </div>
    </div>
</body>
</html>
<script>
var vm = new Vue({
    el:"#app",
    data:{
        lotteryData:[
            {id:0,imgUrl:"./count.png",text:"10元"},
            {id:1,imgUrl:"./count.png",text:"11元"},
            {id:2,imgUrl:"./count.png",text:"10元"},
            {id:3,imgUrl:"./count.png",text:"13元"},
            {id:4,imgUrl:"./count.png",text:"111元"},
            {id:5,imgUrl:"./count.png",text:"19元"},
            {id:6,imgUrl:"./count.png",text:"310元"},
            {id:7,imgUrl:"./count.png",text:"14元"},
            {id:8,imgUrl:"./count.png",text:"1元"},
        ],
        index:-1,   //滾動下標(biāo)
        times:1,    //滾動次數(shù)(每一個方格為一次)
        cycle:50,   //循環(huán)滾動的次數(shù)
        speed:200,  //轉(zhuǎn)動速度
 
    },
    methods:{
        lotteryBtn:function(){
            console.log('點擊')
            this.startRoll();
            this.index = -1;
            this.speed = 200;
            this.times = 1;
        },
        roll:function(){
            var index = this.index;
            var count = this.lotteryData.length;  //總長度
            index += 1;
            if(index > count -1){
                index = 0
            }
            this.index = index
        },
        startRoll:function(){
            this.times += 1;
            this.roll();
            if(this.times > this.cycle + 20){
                clearTimeout(timer);  //清除延遲函數(shù)
                this.times = 0;
            }else{
                if(this.times < this.cycle+20){
                    this.speed -=10;    //加快轉(zhuǎn)動速度
                }else if(this.times >= this.cycle){
                    this.speed += 20;
                    var ind = parseInt(Math.random()*8,0) || 0;    // 隨機(jī)產(chǎn)生一個中獎號碼
                    console.log(ind)
                    this.index = ind
                }
                var timer = setTimeout(this.startRoll,this.speed)
            }
          
        }
    },
    updated(){
 
    }
})
</script>

效果圖:

下面的代碼是我平時做項目的時候?qū)懙拇a,數(shù)據(jù)是從后臺獲取的,由于id的特殊性,所以中獎位置我做了一些調(diào)整

data:{
                times: 1 ,  //轉(zhuǎn)動次數(shù)
                indexs: -1 ,  //滾動下標(biāo)
                cycle:50,    //基本轉(zhuǎn)動次數(shù)
                speed:200,      //轉(zhuǎn)動速度
}   

下面是methods中的方法

startRoll:function(){  //開始滾動
                    var that = this,
                        _this = this;
                    if (_this.on_load == 1) return;
                    that.Roll();
                    that.times += 1;  // 轉(zhuǎn)動次數(shù)
                    if(that.times > that.cycle + 10){
                        clearTimeout(this.timer);      //清除定時器
                        that.times = 0 ;
                    }else{
                        if(that.times < this.cycle){
                            this.speed -=10;   //加快轉(zhuǎn)動速度
                        }else if(that.times >= that.cycle ){ 
                            this.speed += 20;
                            _this.on_load = 1;
                            $.post("{{:url('lotteryProcessHandle')}}", function (res) {
                                switch (parseInt(res.code)) {
                                    case 0:
                                        that.prizes(res.data.id);   
                                        _this.user_info.luckydraw_times;
                                        if (parseInt(res.data.reward_category) == 0) layerMsg(res.msg, 5, 3000, 5, '', function(){
                                            _this.on_load = 0;
                                        });
                                        else layerMsg(res.msg, 1, 3000, 5, '', function(){
                                            _this.on_load = 0;
                                        });
                                        break;
                                    default:
                                        layerMsg(res.msg, 5, 1500, 5, '', function(){
                                            _this.on_load = 0;
                                        });
                                        break;
                                }
                            });
 
                            /**
                             * 重置參數(shù)
                             */
                            _this.times = 1;
                            _this.indexs = -1;
                            _this.speed = 200;
                        }
                        if(that.speed <40) that.speed = 40;
                        this.timer = setTimeout(this.startRoll,this.speed);
                    }
                },
                Roll:function(){   //滾動函數(shù)
                    var _this = this;
                    var index = _this.indexs;
                    var count = _this.lotteryItem.length;
                    index += 1;
                    if(index > count -1) index = 0;
                    _this.indexs = index;
                },
                prizes:function(id){
                    var that = this,
                        datas = that.lotteryItem;
                    if (!isEmpty(datas)) {
                        for(var i=0; i< datas.length ;i++){
                            var ind = i;
                            if(datas[ind].id == id){
                                that.indexs = i;
                                break;
                            }
                        }
                    } 
                },
            },
            mounted(){
                // this.changeType();
            },
            updated:function(){
                this.prizes()
                var _that = this
                // 抽獎按鈕點擊事件
                var letts =  document.getElementsByClassName('lotterydefaultBg');
                for(var i =0 ; i<letts.length; i++){
                    var index = i
                    if(index === 4){
                        letts[i].onclick = function(){
                            if (_that.on_load == 1) return;
                            _that.startRoll();
                        }
                    }
                }
                
            }

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue中引用文件路徑問題小結(jié)

    vue中引用文件路徑問題小結(jié)

    vue路徑分為絕對路徑、相對路徑、~+路徑?及?別名+路徑,在js中,引入帶別名的文件路徑,不需要在別名前加~?,在css或者style中引入的需要在路徑前面加~,路徑以?~?開頭,其后的部分將會被看作模塊依賴,本文給大家介紹vue中引用文件路徑問題,感興趣的朋友一起看看吧
    2023-12-12
  • 手把手帶你安裝vue-cli并創(chuàng)建第一個vue-cli應(yīng)用程序

    手把手帶你安裝vue-cli并創(chuàng)建第一個vue-cli應(yīng)用程序

    vue-cli這個構(gòu)建工具大大降低了webpack的使用難度,支持熱更新,有webpack-dev-server的支持,相當(dāng)于啟動了一個請求服務(wù)器,給你搭建了一個測試環(huán)境,下面這篇文章主要給大家介紹了關(guān)于安裝vue-cli并創(chuàng)建第一個vue-cli應(yīng)用程序的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Vue項目中input框focus時不調(diào)出鍵盤問題的解決

    Vue項目中input框focus時不調(diào)出鍵盤問題的解決

    這篇文章主要介紹了Vue項目中input框focus時不調(diào)出鍵盤問題的解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue3基礎(chǔ)知識剖析

    vue3基礎(chǔ)知識剖析

    筆者這篇文章會從vue3基礎(chǔ)的知識點開始剖析,特別是在將composition?API的時候,在代碼示例中不會一上來就使用setup語法糖,而是用早期的setup函數(shù),這樣方便于初學(xué)的小伙伴們理解跟學(xué)習(xí)
    2022-08-08
  • vue項目如何全局修改el-button樣式

    vue項目如何全局修改el-button樣式

    這篇文章主要介紹了vue項目如何全局修改el-button樣式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue中實現(xiàn)代碼高亮與語法著色的方法介紹

    vue中實現(xiàn)代碼高亮與語法著色的方法介紹

    在Vue的開發(fā)過程中,我們經(jīng)常需要展示代碼片段或者進(jìn)行代碼高亮與語法著色,Vue提供了多種方式來實現(xiàn)代碼高亮與語法著色,本文將為你詳細(xì)介紹這些方法,需要的朋友可以參考下
    2023-06-06
  • el-table實現(xiàn)搜索高亮展示并滾動到元素位置的操作代碼

    el-table實現(xiàn)搜索高亮展示并滾動到元素位置的操作代碼

    這篇文章主要介紹了el-table實現(xiàn)搜索高亮展示并滾動到元素位置,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • vue的webcamjs集成方式

    vue的webcamjs集成方式

    這篇文章主要介紹了vue的webcamjs集成方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue3利用customRef實現(xiàn)防抖

    vue3利用customRef實現(xiàn)防抖

    防抖就是對于頻繁觸發(fā)的事件添加一個延時同時設(shè)定一個最小觸發(fā)間隔,防抖大家都學(xué)過,但是如何在?Vue3?里中將防抖做到極致呢,下面小編就來和大家詳細(xì)講講
    2023-10-10
  • vuejs 單文件組件.vue 文件的使用

    vuejs 單文件組件.vue 文件的使用

    本篇文章主要介紹了vuejs 單文件組件.vue 文件的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論