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
Conclusion: In a multithreaded environment, if on...
Div basic layout <div class="main"&g...
Problem 1: Baidu Map uses tiled images (the map i...
Table of contents 1. Timer monitoring 2. Event mo...
Introduction to structure and performance HTML st...
Many times we want the server to run a script reg...
The nginx logs are collected by filebeat and pass...
Table of contents 1. Demand Background 2. Optimiz...
Record the installation and configuration method ...
Preface I believe that everyone has been developi...
1. Optimization of commonly used HTML tags HTML s...
1. Download the MySQL 5.7 installation package fr...
Shopify Plus is the enterprise version of the e-c...
Preface After a long time of reading various mate...
Preface Recently, part of the company's busin...