时间滚动效果组件

时间滚动效果组件

<template>
  <div class="time">
    <ul class="numbers hoursFirst">
      <li  v-for="(item, index) in arr" class="liItem" :key="index">{{item}}</li>
    </ul>
    <ul class="numbers hoursLast">
      <li  v-for="(item, index) in arr" :key="index">{{item}}</li>
    </ul>
    <span class="icon">:</span>
    <ul class="numbers minutesFirst">
      <li  v-for="(item, index) in arr" :key="index">{{item}}</li>
    </ul>
    <ul class="numbers minutesLast">
      <li  v-for="(item, index) in arr" :key="index">{{item}}</li>
    </ul>
    <span class="icon">:</span>
    <ul class="numbers secondsFirst">
      <li  v-for="(item, index) in arr" :key="index">{{item}}</li>
    </ul>
    <ul class="numbers secondsLast">
      <li  v-for="(item, index) in arr" :key="index">{{item}}</li>
    </ul>
  </div>
</template>

<script>
export default {
  data(){
    return{
      timeObj: null,
      arr:[0,1,2,3,4,5,6,7,8,9]
    }
  },
  beforeDestroy() {
    if(this.timeObj){
      clearInterval(this.timeObj)
    }
  },
  mounted(){
    this.move()
    this.timeObj = setInterval(()=>{
      this.move()
    },1000)
  },
  methods:{
    getFirstDigit(number){
      return parseInt(number / 10);
    },
    getLastDigit(number){
      return number%10;
    },
    move(){
      var myDate = new Date();
      var seconds = myDate.getSeconds();
      var minutes = myDate.getMinutes();
      var hours = myDate.getHours();
      let _this = this
      var animateFirstDigit = function(className,property){
        var divBox = document.getElementsByClassName(className)[0]
        var itemLiHight = getComputedStyle(divBox, false).height.replace('px','')
        var height = (itemLiHight/10).toFixed(2)
        var num = _this.getFirstDigit(property)
        divBox.style.top =  -(num * height)+'px'
      }

      var animateSecondDigit = function(className,property){
        var divBox = document.getElementsByClassName(className)[0]
        var itemLiHight = getComputedStyle(divBox, false).height.replace('px','')
        var height = (itemLiHight/10).toFixed(2)
        var num = _this.getLastDigit(property)
        divBox.style.top =  -(num * height)+'px'
      }
      animateFirstDigit("hoursFirst",hours);
      animateSecondDigit("hoursLast",hours);
      animateFirstDigit("minutesFirst",minutes);
      animateSecondDigit("minutesLast",minutes);
      animateFirstDigit("secondsFirst",seconds);
      animateSecondDigit("secondsLast",seconds);
    }

  }
}
</script>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值