Vue implements the countdown component for second kills

Vue implements the countdown component for second kills

This article shares the specific code of Vue to implement the second kill countdown component for your reference. The specific content is as follows

Below is the countdown component for the second kill using Vue

Development ideas

1. Request the server to obtain the server time at this moment (based on the server time)
2. Get the user's current computer time and compare it with the server time to get the time difference. The final time is the current computer time minus the time difference (defined as the current server time)
3. Set the start time of the flash sale
4. Compare the flash sale time with the current server time to get the time difference (X seconds in total)
5. Calculate the number of days, hours, minutes, and seconds until the flash sale starts based on X seconds.

Code Implementation

The following code only shows steps 4 and 5.

Component CountDown.vue

<template>
  <div>
      <input type="datetime-local" :min="currentTime" placeholder="Please enter the start time of the flash sale" v-model="startTime">
      <button @click="submit">Start timing</button>
  </div>
  <div>
      <h1>{{ countDownTime }}</h1>
  </div>
</template>

<script>
let timer = null;
let tipTextPrefix = 'Time left until the flash sale starts: ';
import moment from "moment";
export default {
    name: 'CountDown',
    data() { return {
        currentTime: moment().format('YYYY-MM-DDTHH:mm'), // Please use the server time calculated in steps 1-3 startTime: moment().format('YYYY-MM-DDTHH:mm'),
        countDownTime: tipTextPrefix + '0 days 0 hours 0 minutes 0 seconds'
    }},
    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 'Second sale has started';
            }
            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 + 'day' + hour + 'hour' + minute + 'minute' + second + 'second';
            return res;
        }
    },
}
</script>

<style>

</style>

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • Solve the problem that vue project cannot carry cookies when started locally
  • Solution to the error "cannot GET /service" when starting a vue project
  • Vue modify project startup port number method
  • Detailed explanation of how to start running the dist file generated after webpack packages the vue project
  • Detailed explanation of VSCode configuration to start Vue project
  • Simple configuration method for hot start debugging of webpack+vue+express(hot)
  • Analysis of the reasons why vue-cli cannot access the local service LAN
  • Detailed explanation of vue express starting data service
  • Vue implements the product tab of the product details page function
  • Detailed explanation of the implementation principle of Vue2.0/3.0 two-way data binding
  • How to start a Vue.js project

<<:  Solution to the problem of flash back after entering the password in MySQL database

>>:  Detailed explanation of Nginx's connection limit configuration for IP addresses in a network segment

Recommend

Detailed explanation of Linux text processing command sort

sort Sort the contents of a text file Usage: sort...

Summary of naming conventions for HTML and CSS

CSS naming rules header: header Content: content/c...

Realize super cool water light effect based on canvas

This article example shares with you the specific...

How to deploy ElasticSearch in Docker

1. What is ElasticSearch? Elasticsearch is also d...

How to use @media in mobile adaptive styles

General mobile phone style: @media all and (orien...

Detailed tutorial on installing MySQL database on Alibaba Cloud Server

Table of contents Preface 1. Uninstall MySQL 2. I...

Detailed explanation of Linux CPU load and CPU utilization

CPU Load and CPU Utilization Both of these can re...

How to set up the terminal to run applications after Ubuntu starts

1. Enter start in the menu bar and click startup ...

Let’s take a look at JavaScript precompilation (summary)

JS running trilogy js running code is divided int...

Nginx Service Quick Start Tutorial

Table of contents 1. Introduction to Nginx 1. Wha...

How to restore single table data using MySQL full database backup data

Preface When backing up the database, a full data...

How to deploy services in Windows Server 2016 (Graphic Tutorial)

introduction Sometimes, if there are a large numb...

Super detailed tutorial to implement Vue bottom navigation bar TabBar

Table of contents Project Introduction: Project D...