封装vue版数字翻牌器

<template>

    <div class="number">

        <ul id="dataNums">

            <li v-for="(item,index) in list" :key="index">

                <div class="dataBoc">

                    <div class="tt"

                        :style="{transition:'all 2.5s ease-in-out 0s',top:'-'+item.top+'px'}">

                        <span v-for="(item2,index2)in numList" :key="index2">{{item2}}</span>

                    </div>

                </div>

            </li>

        </ul>

    </div>

</template>


js部分

export default {

        props:{

         number:Number

        },

        data(){

            return{

                list:[],

                numList: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, '.']

            }

        },

        mounted(){

            this.scroll();

        },

        methods:{

            scroll(){

                this.list=this.number.toString().split('');

                let arr=[];

                this.list.forEach((value) => {

                    arr.push({

                        num:value,

                        top:0

                    })

                });

                this.list=arr;

                Let Hei=parseFloat(getComputedStyle(document.getElementById("dataNums")).height);

                this.list.forEach((value,index) => {

                    setTimeout(()=>{

                        value.top=parseFloat((value.num*Hei)+(Hei*10));

                    },index*300);

                });

            }

        }

    }



css样式

    .number {

        margin-bottom: 10px;

        text-align: center;


        ul {

            display: inline-block;

            height: 40px;

            text-align: center;

            li {

                float: left;

                width: 40px;

                height: 40px;

                text-align: center;

                margin: 0 4px;

background: url("../assets/images/yuyueshf/number.png") no-repeat center;//背景图

                background-size: 100% 100%;

                .dataBoc {

                    position: relative;

                    width: 100%;

                    height: 100%;

                    overflow: hidden;

                    .tt {

                        position: absolute;

                        top: 0;

                        left: 0;

                        width: 100%;

                        height: 100%;

                        span{

                            width: 100%;

                            height: 100%;

                            line-height: 40px;

                            float: left;

                            text-align: center;

                            font-size: 26px;

                            color: #f64841;

                        }

                    }

                }

            }

        }

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。