vue實(shí)現(xiàn)秒殺倒計(jì)時(shí)組件
本文實(shí)例為大家分享了vue實(shí)現(xiàn)秒殺倒計(jì)時(shí)組件的具體代碼,供大家參考,具體內(nèi)容如下
下面是使用Vue實(shí)現(xiàn)秒殺倒計(jì)時(shí)組件

開發(fā)思路
1.請(qǐng)求服務(wù)器獲取這一刻的服務(wù)器時(shí)間(統(tǒng)一以服務(wù)器時(shí)間為基準(zhǔn))
2.獲取用戶當(dāng)前電腦時(shí)間與服務(wù)器時(shí)間比對(duì),獲取時(shí)間差。以當(dāng)前電腦時(shí)間-減去時(shí)間差為最終時(shí)間(定義為服務(wù)器當(dāng)前時(shí)間)
3.設(shè)置秒殺開始時(shí)間
4.秒殺時(shí)間與服務(wù)器當(dāng)前時(shí)間比對(duì),獲取時(shí)間差(共X秒)
5.根據(jù)X秒計(jì)算出離秒殺開始時(shí)間還有x天x小時(shí)x分鐘x秒
代碼實(shí)現(xiàn)
下面代碼只展示第4、第5步驟
組件CountDown.vue
<template>
<div>
<input type="datetime-local" :min="currentTime" placeholder="請(qǐng)輸入秒殺開始時(shí)間" v-model="startTime">
<button @click="submit">開始計(jì)時(shí)</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'), // 請(qǐng)使用步驟1-3計(jì)算出來(lái)的服務(wù)器時(shí)間
startTime: moment().format('YYYY-MM-DDTHH:mm'),
countDownTime: tipTextPrefix + '0天 0小時(shí) 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 + '小時(shí) '+ minute + '分鐘 '+ second + '秒 ';
return res;
}
},
}
</script>
<style>
</style>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 解決vue項(xiàng)目本地啟動(dòng)時(shí)無(wú)法攜帶cookie的問題
- vue項(xiàng)目啟動(dòng)出現(xiàn)cannot GET /服務(wù)錯(cuò)誤的解決方法
- Vue修改項(xiàng)目啟動(dòng)端口號(hào)方法
- 詳解webpack打包vue項(xiàng)目之后生成的dist文件該怎么啟動(dòng)運(yùn)行
- 詳解VSCode配置啟動(dòng)Vue項(xiàng)目
- webpack+vue+express(hot)熱啟動(dòng)調(diào)試簡(jiǎn)單配置方法
- vue-cli啟動(dòng)本地服務(wù)局域網(wǎng)不能訪問的原因分析
- 詳解vue express啟動(dòng)數(shù)據(jù)服務(wù)
- vue實(shí)現(xiàn)商品詳情頁(yè)功能之商品選項(xiàng)卡
- Vue2.0/3.0雙向數(shù)據(jù)綁定的實(shí)現(xiàn)原理詳解
- 如何啟動(dòng)一個(gè)Vue.js項(xiàng)目
相關(guān)文章
django使用channels2.x實(shí)現(xiàn)實(shí)時(shí)通訊
這篇文章主要介紹了django使用channels2.x實(shí)現(xiàn)實(shí)時(shí)通訊,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
vue中如何動(dòng)態(tài)設(shè)置css樣式的hover
這篇文章主要介紹了vue中如何動(dòng)態(tài)設(shè)置css樣式的hover,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
最全vue的vue-amap使用高德地圖插件畫多邊形范圍的示例代碼
這篇文章主要介紹了最全vue的vue-amap使用高德地圖插件畫多邊形范圍,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
vue學(xué)習(xí)筆記之v-if和v-show的區(qū)別
本篇文章主要介紹了vue學(xué)習(xí)筆記之v-if和v-show的區(qū)別,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
優(yōu)雅的處理vue項(xiàng)目異常實(shí)戰(zhàn)記錄
這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅的處理vue項(xiàng)目異常的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
詳解如何配置vue-cli3.0的vue.config.js
這篇文章主要介紹了詳解如何配置vue-cli3.0的vue.config.js,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08

