vue 組件老虎機(jī) 無依賴?yán)匣C(jī)效果

最近過活動要做個老虎機(jī)效果,發(fā)現(xiàn)網(wǎng)上找的幾乎都是以前的jq寫的,找了一個后看了看代碼,感覺寫了的比較麻煩,然后自己寫了一個簡單的。主要是用css3來實現(xiàn)轉(zhuǎn)動加速減速的效果。應(yīng)為需要獲取設(shè)置元素高度等問題,為了方便引入了jq,如果不依賴jq可吧用jq的地方改成原生js。

<template>
    <div>
        <div class="box">
            <div class="groups animation-ease" v-for="k in 3" @webkitTransitionEnd="endGame(k)">
                <ul class="group-item" v-for="i in (round+1)" >
                    <li class="prize-item" v-for="item in prizes">{{item}}</li>
                </ul>
            </div>
        </div>
        <div  @click="startClick">{{disClick?'抽獎中...':'點(diǎn)擊開始'}}</div>
    </div>
</template>
<script>
import $ from 'jquery'
export default {
    data(){
        return {
            round:6,//轉(zhuǎn)幾回合后停下來
            prizes:[1,2,3,4,5,6,7,8,9,11,12,13,14,15],
            disClick:false,//防止多次點(diǎn)擊
            itemHeight:0,//每個獎品的高度
            prize_id:'',//中獎id
        }
    },
    mounted(){
        this.itemHeight = $('.prize-item').outerHeight()
        $('.groups').css('height',this.itemHeight * this.prizes.length*(this.round+1))
    },
    methods:{
        startClick(){//開始抽獎
            if(this.disClick){
                return
            }
            //獲取中獎的id
            let index = parseInt(Math.random()*this.prizes.length);
            this.prizd_id = this.prizes[index];
            this.runGame(index)
        },
        runGame(index){//啟動抽獎
            this.disClick = true;
            this.resetGame();
            var itemHeight = this.itemHeight;
            var groupsHeight = this.round*$('.group-item').height();
            $('.groups').each(function(e){
                var pos = index*itemHeight + groupsHeight
                setTimeout(()=>{
                    $(this).addClass('animation-ease').css('transform','translate3d(0, -'+pos+'px, 0)')
                },e*300)
            })
        },
        endGame(k){//抽獎結(jié)束后的回調(diào)
            if(k==3){
                alert('恭喜您中了'+this.prizd_id)
                this.disClick = false;
            }
        },
        resetGame(){//重置狀態(tài)
            $('.groups').removeClass('animation-ease').css('transform','');
        }
    }
}
</script>
<style lang="less" scoped>
.box{
    width:300px;
    height:100px;
    overflow: hidden;
    background: #fff;
    .animation-ease{
        transition-property:transform;
        transition-duration: 3s;
        transition-timing-function: ease;
    }
    .groups{
        float: left;
        width:100px;
        text-align: center;
        .prize-item{
            width:100px;
            height:100px;
            font-size:50px;
        }
    }
}
</style>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 她睡了,安靜地 我在一旁,安靜地 燈散在頭發(fā)上的色 衣服襯在四周的亮 當(dāng)然也包括我身上她的影子 她臉頰我的目光 就...
    藍(lán)甘樂閱讀 193評論 0 3
  • 血管堵了——叫微循環(huán)障礙 堵在心臟——叫梗 堵在毛細(xì)血管——叫瘤 堵在肝臟——叫腫瘤 堵在子宮——叫肌瘤 堵在乳腺...
    麗軒閣美容美體紋繡閱讀 730評論 0 0
  • 有一年臘月,東方朔在御花園里游玩, 發(fā)現(xiàn)一個宮女正在井邊傷心地哭。 東方朔趕緊跑過去, 問她為什么這么難過。 這個...
    朗而晴之閱讀 1,392評論 0 0
  • 三年來,我一直沒忘記你。 我知道這是愛情的萌芽。 初識,第一面看你很面熟,不知道為什么,看到你總想逃走,看到你就很...
    薄荷清雪閱讀 284評論 0 0
  • 最近兩個月沒怎么寫東西,我感覺心里都長草了。21天養(yǎng)成一個習(xí)慣?不可能!我寫了一年多,說中斷就中斷了。所以一看到叨...
    小壞蛋格瑞特閱讀 311評論 0 1

友情鏈接更多精彩內(nèi)容