vue实现秒杀倒计时组件

 更新时间:2021年04月21日 10:56:03   作者:GuoyeZhang  
这篇文章主要为大家详细介绍了vue实现秒杀倒计时组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了vue实现秒杀倒计时组件的具体代码,供大家参考,具体内容如下

下面是使用Vue实现秒杀倒计时组件

开发思路

1.请求服务器获取这一刻的服务器时间(统一以服务器时间为基准)
2.获取用户当前电脑时间与服务器时间比对,获取时间差。以当前电脑时间-减去时间差为最终时间(定义为服务器当前时间)
3.设置秒杀开始时间
4.秒杀时间与服务器当前时间比对,获取时间差(共X秒)
5.根据X秒计算出离秒杀开始时间还有x天x小时x分钟x秒

代码实现

下面代码只展示第4、第5步骤

组件CountDown.vue

<template>
  <div>
      <input type="datetime-local" :min="currentTime" placeholder="请输入秒杀开始时间" v-model="startTime">
      <button @click="submit">开始计时</button>
  </div>
  <div>
      <h1>{{ countDownTime }}</h1>
  </div>
</template>

<script>
let timer = null;
let tipTextPrefix = '离秒杀开始还有: ';
import moment from "moment";
export default {
    name: 'CountDown',
    data() { return {
        currentTime: moment().format('YYYY-MM-DDTHH:mm'), // 请使用步骤1-3计算出来的服务器时间
        startTime: moment().format('YYYY-MM-DDTHH:mm'),
        countDownTime: tipTextPrefix + '0天 0小时 0分钟 0秒'
    }},
    methods: {
        submit: function() {
            const _this = this;
            clearInterval(timer);
            timer = setInterval(() => {
                _this.countDownTime = _this.countDown();
            }, 1000);
        },
        countDown: function() {
            console.log(this.startTime);
            const seconds = moment(this.startTime).diff(new Date, 'seconds');
            if (seconds <= 0) {
                clearInterval(timer);
                return '秒杀已开始';
            }
            const second = seconds%60;
            const minutes = (seconds-second) / 60;
            const minute = minutes%60;
            const hours = (minutes-minute) / 60;
            const hour = hours%24;
            const day = (hours-hour) / 24;
            const res = tipTextPrefix + day + '天 '+ hour + '小时 '+ minute + '分钟 '+ second + '秒 ';
            return res;
        }
    },
}
</script>

<style>

</style>

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

相关文章

  • vue引入jq插件的实例讲解

    vue引入jq插件的实例讲解

    下面小编就为大家带来一篇vue引入jq插件的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Vue生命周期详解

    Vue生命周期详解

    这篇文章详细介绍了Vue的生命周期,文中通过代码示例介绍的非常详细。对大家的学习有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Vue实战之掌握自定义指令

    Vue实战之掌握自定义指令

    作为使用Vue的开发者,我们对Vue指令一定不陌生,诸如v-model、v-on、v-for、v-if等,同时Vue也为开发者提供了自定义指令的api,熟练的使用自定义指令可以极大的提高了我们编写代码的效率,让我们可以节省时间开心的摸鱼
    2022-11-11
  • vue axios调用接口方法报错500 internal server error的两种解决方法

    vue axios调用接口方法报错500 internal server err

    前端使用axios 访问后端接口时报错,在浏览器中点击红色的报错数据,本文给大家分享vue axios调用接口方法报错500 internal server error的两种解决方法,感兴趣的朋友一起看看吧
    2023-10-10
  • Vue多重文字描边组件实现示例详解

    Vue多重文字描边组件实现示例详解

    这篇文章主要为大家介绍了Vue多重文字描边组件实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 本地部署element-plus文档的简单步骤

    本地部署element-plus文档的简单步骤

    由于公司网络登element-ui官方文档很慢,想把他载下来离线文档本地跑,下面这篇文章主要给大家介绍了关于本地部署element-plus文档的简单步骤,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • VuePress 快速踩坑小结

    VuePress 快速踩坑小结

    VuePress 可以让您非常方便的在 Markdown 文档中编写 Vue 代码,这篇文章主要介绍了VuePress 快速踩坑小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • ant design vue的form表单取值方法

    ant design vue的form表单取值方法

    这篇文章主要介绍了ant design vue的form表单取值方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • vue实现百度下拉列表交互操作示例

    vue实现百度下拉列表交互操作示例

    这篇文章主要介绍了vue实现百度下拉列表交互操作,结合实例形式分析了vue.js使用jsonp针对百度接口进行交互的相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • vue.config.js中配置分包策略及常见的配置选项

    vue.config.js中配置分包策略及常见的配置选项

    在Vue.js中分包(Code Splitting)是一种将应用程序代码拆分为不同的块或包的技术,从而在需要时按需加载这些包,下面这篇文章主要给大家介绍了关于vue.config.js中配置分包策略及常见的配置选项的相关资料,需要的朋友可以参考下
    2024-02-02

最新评论