本文实例为大家分享了Vue组件实现数字滚动抽奖效果的具体代码,供大家参考,具体内容如下

可调整数字滚动速度,可指定开奖延迟时间,可指定开奖数字,按个人需求自行改动(录了个效果供参考,临时找的录屏,表介意)
不一一精简了

组件代码

<template>
    <div class="info-span04" style="color: #333333;">
        中奖号码:
        <div style="vertical-align: middle;display: inline-block;">
            <div class="openNumber" v-for="(item, index) in awardCode">
                <div class="num mui-text-center">
                    <div class="span value">
                        <transition name="down-up-translate-fade">
                            <div :key="item.value">{{item.value}}</div>
                        </transition>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>
<script>
    export default {
        name: 'numberRolling',
        data () {
            return {
                interval: null,
                interval_one: null,
                interval_two: null,
                awardCode: [
                    {name: 'oneDigit', value: '?'},
                    {name: 'tenDigit', value: '?'},
                    {name: 'hundredsDigit', value: '?'}
                ],
            }
        },
        props:{
            
        },
        // 开奖效果方法
        methods: {
            start() {
                var _this = this;
                if (!this.interval) {
                    let i = 0
                    this.interval = setInterval(function() {
                        _this.awardCode[0].value =   i <= 9 ? i : (i=-1,  i)
                    }, 100)
                }
            },
            end(i) {
                this.awardCode[0].value = i;
                this.show = !this.show
                clearInterval(this.interval)
                this.interval = null
            },
            start_one() {
                var _this = this;
                if (!this.interval_one) {
                    let j = 0
                    this.interval_one = setInterval(function() {
                        _this.awardCode[1].value =   j <= 9 ? j : (j=-1,  j)
                    }, 100)
                }
            },
            end_one(j) {
                this.awardCode[1].value = j;
                clearInterval(this.interval_one)
                this.interval_one = null
            },
            start_two() {
                this.show_two = !this.show_two
                var _this = this;
                let k = 0
                if (!this.interval_two) {
                    this.interval_two = setInterval(function() {
                        // _this.k = Math.floor(Math.random() * 10);
                        // if (k < 10) {
                        //     _this.awardCode[2].value = k  ;
                        // } else {
                        //     k = 0
                        //     _this.awardCode[2].value = k  ;
                        // }
                        _this.awardCode[2].value =   k <= 9 ? k : (k=-1,  k)
                    }, 100)
                }
            },
            end_two(k) {
                this.awardCode[2].value = k;
                this.show_two = !this.show_two
                clearInterval(this.interval_two)
                this.interval_two = null
            },
            prizeNumber(code) {
                this.awardCode[0].value = code.substr(0,1)
                this.awardCode[1].value = code.substr(1,1)
                this.awardCode[2].value = code.substr(2,1)
            },
        },
        beforeDestroy: function() {
            if(this.interval){
              clearInterval(this.interval)
            }
            if(this.interval_one){
              clearInterval(this.interval_one)
            }
            if(this.interval_two){
              clearInterval(this.interval_two)
            }
        }
    }
</script>
<style lang="scss" scoped>
    .openNumber {
        display: inline-block;
        width: vw(52);
        height: vw(52);
        padding-right: vw(36);
        .num {
            width: vw(52);
            height: vw(52);
            overflow: hidden;
            .span {
                color: #fff;
                width: vw(52);
                height: vw(52);
                font-weight: bold;
                float: left;
                .span div {
                    text-align: center;
                }
            }
            .down-up-translate-fade-enter-active,
            .down-up-translate-fade-leave-active {
                transition: all .1s;
                -webkit-transition: all .1s;
                -moz-transition: all .1s;
                -o-transition: all .1s;
            }
            .down-up-translate-fade-enter,
            .down-up-translate-fade-leave-active {
                opacity: 1;
            }
            .down-up-translate-fade-leave-active {
                transform: translateY(-50px);
                -webkit-transform: translateY(-50px);
                -moz-transform: translateY(-50px);
                -o-transform: translateY(-50px);
            }
            .value {
                background: url('../images/pokinhall-toBeAwarded.png') no-repeat top center;
                background-size: 100% 100%;
                width: vw(52);
                height: vw(52);
                line-height: vw(52);
                font-size: 22px;
                font-weight: bold;
            }
        }
    }
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持Devmax。

Vue组件实现数字滚动抽奖效果的更多相关文章

  1. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  2. jQuery实现简单的抽奖游戏

    这篇文章主要为大家详细介绍了jQuery实现简单的抽奖游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. vue自定义加载指令v-loading占位图指令v-showimg

    这篇文章主要为大家介绍了vue自定义加载指令和v-loading占位图指令v-showimg的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. vue使用动画实现滚动表格效果

    这篇文章主要为大家详细介绍了vue使用动画实现滚动表格效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. 关于Vue 监控数组的问题

    这篇文章主要介绍了Vue 监控数组的示例,主要包括Vue 是如何追踪数据发生变化,Vue 如何更新数组以及为什么有些数组的数据变更不能被 Vue 监测到,对vue监控数组知识是面试比较常见的问题,感兴趣的朋友一起看看吧

  6. Vue子组件props从父组件接收数据并存入data

    这篇文章主要介绍了Vue子组件props从父组件接收数据并存入data的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  7. Vue h函数的使用详解

    本文主要介绍了Vue h函数的使用详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  8. VUE响应式原理的实现详解

    这篇文章主要为大家详细介绍了VUE响应式原理的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

  9. vue+Element ui实现照片墙效果

    这篇文章主要为大家详细介绍了vue+Element ui实现照片墙效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. vue+elemet实现表格手动合并行列

    这篇文章主要为大家详细介绍了vue+elemet实现表格手动合并行列,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部