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
1. Add the following dependencies in pom.xml <...
1.watch listener Introducing watch import { ref, ...
Code Explanation 1.1 http:www.baidu.test.com defa...
Let me tell you about a recent case. A game log l...
Table of contents Preface 1. Monadic Judgment 1.1...
Table of contents Introduction to WiFi Wireless T...
Preface Usually when making h5 pages, you need to...
The MySQL version used in this example is mysql-8...
We are not discussing PHP, JSP or .NET environmen...
0. Overview Zabbix is an extremely powerful ope...
Table of contents Preface Example summary Preface...
Table of contents 1. Check the number of Linux bi...
Table of contents 1. Discover the problem 2. Dele...
1. CSS style solves the problem of displaying ell...
This time, we will try to package the running con...