Today I'd like to introduce a countdown made by vue and moment. The specific content is as follows: Display style: <template> <div class="table-right flex-a-center"> <div class="time-text"> <span class="timeTextSpan" v-for="item,index of h" >{{item}}</span> <span class="timeTextSpan1" >: </span> <span class="timeTextSpan" v-for="item,index of m" >{{item}}</span> <span class="timeTextSpan1" >: </span> <span class="timeTextSpan" v-for="item,index of s" >{{item}}</span> </div> </div> </template> <script> import moment from 'moment' export default { props: { endTime: { }, //Last received time 2021-12-17 16:29:20 }, data() { //Store data here return { h:'00', m:'00', s:'00', timer:null }; }, watch: endTime: { handler(e) { if (e) { let self = this clearInterval(this.timer) this.timer = setInterval(function(){self.init()},1000) } }, deep: true, immediate: true } }, mounted() { let self = this self.init() clearInterval(this.timer) this.timer = setInterval(function(){self.init()},1000) }, //Method collection methods: { init(){ let time = moment(this.endTime).diff(moment()) if(time <= 0){ clearInterval(this.timer) this.onOver() return } let t = time / 1000; let d = Math.floor(t / (24 * 3600)); //Remaining days, you can make up for it if necessary let h = Math.floor((t - 24 * 3600 * d) / 3600) + d*24; //No days needed, convert days into hours let _h = Math.floor((t - 24 * 3600 * d) / 3600) //Keep the days and get the hours let m = Math.floor((t - 24 * 3600 * d - _h * 3600) / 60); let s = Math.floor((t - 24 * 3600 * d - _h * 3600 - m * 60)); this.h = String(h).length == 1? '0'+String(h):String(h) this.m = String(m).length == 1? '0'+String(m):String(m) this.s = String(s).length == 1? '0'+String(s):String(s) }, onOver() { this.$emit('over') //Callback when countdown ends} }, beforeDestroy(){ this.timer = null clearInterval(this.timer) } } </script> <style lang='less' scoped> @import url("@/assets/css/supplier.less"); .table-right { font-size: 12px; color: #757e8a; .timeTextSpan{ display: inline-block; width: 14px; height: 22px; text-align: center; background: #F1F0F0; border-radius: 2px; margin-right: 2px; font-size: 16px; color: #ff8a2b; font-weight: bold; } .timeTextSpan1{ display: inline-block; width: 14px; text-align: center; vertical-align: bottom; color:#202D40; font-size: 16px; font-weight: bold; } .time-text { margin-left: 10px; } } </style> This is the end of this article about using momentJs to make a countdown component. For more related momentJs countdown component content, please search 123WORDPRESS.COM's previous articles or continue to browse the following related articles. I hope everyone will support 123WORDPRESS.COM in the future! You may also be interested in:
|
<<: Detailed explanation of the frame and rules attributes of the table in HTML
>>: Advantages and disadvantages of Table layout and why it is not recommended
There are many articles about ssh server configur...
Note: If there are any errors in the article, ple...
There are some issues that are not limited to Vue...
I recently used Dreamweaver to make a product pres...
Effect picture: Implementation code: <template...
Whether it is Samba service or NFS service, the m...
Table of contents Loop - for Basic use of for loo...
Q: I don’t know what is the difference between xml...
1. Introduction to TypeScript The previous articl...
Because I have a database tutorial based on SQL S...
This article shares the specific code of JavaScri...
1. The mysqldump backup method uses logical backu...
Table of contents 1. After downloading, unzip it ...
Using the internal function instr in MySQL can re...
1 Background JDK1.8-u181 and Tomcat8.5.53 were in...