zoukankan      html  css  js  c++  java
  • vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)

    我发现好多倒计时的插件,刷新都会变成从头再来,于是自己用vue2.0写了一个,测试通过,直接上代码

    如下是组件代码:

    <template>
      <span :endTime="endTime" :callback="callback" :endText="endText">
        <slot>
          {{content}}
        </slot>
      </span>
    </template>
    <script>
      export default {
        data(){
          return {
          content: '',
          }
        },
        props:{
          endTime:{
            type: String,
            default :''
          },
          endText:{
            type : String,
            default:'已结束'
          },
          callback : {
            type : Function,
            default :''
          }
        },
        mounted () {
         this.countdowm(this.endTime)
        },
        methods: {
          countdowm(timestamp){
          let self = this;
          let timer = setInterval(function(){
            let nowTime = new Date();
            let endTime = new Date(timestamp * 1000);
            let t = endTime.getTime() - nowTime.getTime();
            if(t>0){
              let day = Math.floor(t/86400000);
              let hour=Math.floor((t/3600000)%24);
              let min=Math.floor((t/60000)%60);
              let sec=Math.floor((t/1000)%60);
              hour = hour < 10 ? "0" + hour : hour;
              min = min < 10 ? "0" + min : min;
              sec = sec < 10 ? "0" + sec : sec;
              let format = '';
              if(day > 0){
                format = `${day}天${hour}小时${min}分${sec}秒`;
              } 
              if(day <= 0 && hour > 0 ){
                format = `${hour}小时${min}分${sec}秒`; 
              }
              if(day <= 0 && hour <= 0){
                format =`${min}分${sec}秒`;
              }
              self.content = format;
              }else{
               clearInterval(timer);
               self.content = self.endText;
               self._callback();
              }
             },1000);
            },
            _callback(){
            if(this.callback && this.callback instanceof Function){
               this.callback(...this);
             }
          }
        }
      }
    </script>

    下面是调用代码:

    <count-down endTime="1490761620" :callback="callback" endText="已经结束了"></count-down>

    ednTime 是时间结束之后的时间戳  callback是结束之后的回调  endText是结束之后的文字显示!

    转载

  • 相关阅读:
    npm 一些常用的命令
    Angular Encapsulation
    隐藏scrollbar
    Vue生命周期详解(1)- 单个组件
    如何自己制作iconfont
    day07-2018-10--25 深浅拷贝
    day06-2018-10--24 小数据池和编码
    day05-2018-10--23 字典
    day04-2018-10--22python基础
    day03-2018-10-19-python基础
  • 原文地址:https://www.cnblogs.com/azhqiang/p/9440968.html
Copyright © 2011-2022 走看看