vue实现倒计时功能


Posted in Vue.js onMarch 24, 2021

通过父组件传入的结束时间减去当前日期得到剩余时间

1.子组件部分

<div class="itemend">
 <p class="itemss">倒计时<span>{{day}}</span>天<span>{{hour}}</span>时<span>{{minute}}</span>分<span>{{second}}</span>秒</p>
</div>

代码:

data() {
 return {
 day: "", //天
 hour: "", //时
 minute: "", //分
 second: "", //秒
 flag: false,
 };
 },
 mounted() {
 let time = setInterval(() => {
 if (this.flag == true) {
 clearInterval(time);
 }
 this.timeDown();
 }, 500);
 },
 props: {
 endTime: {
 type: String,
 },
 },
 methods: {
 timeDown() {
 const endTime = new Date(this.endTime);
 const nowTime = new Date();
 let leftTime = parseInt((endTime.getTime() - nowTime.getTime()) / 1000);
 let d = parseInt(leftTime / (24 * 60 * 60));
 let h = this.formate(parseInt((leftTime / (60 * 60)) % 24));
 let m = this.formate(parseInt((leftTime / 60) % 60));
 let s = this.formate(parseInt(leftTime % 60));
 if (leftTime <= 0) {
 this.flag = true;
 this.$emit("time-end");
 }
 this.day = d; //天
 this.hour = h; //时
 this.minute = m; //分
 this.second = s; //秒
 },
 formate(time) {
 if (time >= 10) {
 return time;
 } else {
 return `0${time}`;
 }
 },
}

2.父组件引用

<template>
 <div>
 <Times :endTime='timeEnd'></Times>
 </div> 
</template>
 
import Times from "@/components/time";
export default {
 name: "Home",
 data() {
 return {
 timeEnd: "2021-3-30 9:50" //结束时间(苹果手机无法解析"-" 可以将格式改为2021/3/30)
 },
  
 components: {
 Times,
 },
};

 

Vue.js 相关文章推荐
Vue开发中常见的套路和技巧总结
Nov 24 Vue.js
Vue组件简易模拟实现购物车
Dec 21 Vue.js
vue 动态创建组件的两种方法
Dec 31 Vue.js
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
Mar 01 Vue.js
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
Vue2.0搭建脚手架
Mar 13 Vue.js
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
vue如何实现关闭对话框后刷新列表
Apr 08 Vue.js
vue3种table表格选项个数的控制方法
Apr 14 Vue.js
vue 给数组添加新对象并赋值
Apr 20 Vue.js
vue 中 get / delete 传递数组参数方法
Mar 23 #Vue.js
使用Vue.js和MJML创建响应式电子邮件
vue+flask实现视频合成功能(拖拽上传)
Mar 04 #Vue.js
vue打开新窗口并实现传参的图文实例
Mar 04 #Vue.js
Vue-router编程式导航的两种实现代码
Mar 04 #Vue.js
手写Vue2.0 数据劫持的示例
Mar 04 #Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 #Vue.js
You might like
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
2013/06/18 PHP
php对图像的各种处理函数代码小结
2013/07/08 PHP
C/S和B/S两种架构区别与优缺点分析
2014/10/23 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
JS跨域代码片段
2012/08/30 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
2016/01/01 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
vue如何截取字符串
2019/05/06 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
Python计算已经过去多少个周末的方法
2015/07/25 Python
基于Python实现一个简单的银行转账操作
2016/03/06 Python
pyqt5自定义信号实例解析
2018/01/31 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
用pycharm开发django项目示例代码
2019/06/13 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
YSL圣罗兰美妆英国官网:Yves Saint Laurent Beauty UK
2019/08/03 全球购物
拓展策划方案
2014/06/03 职场文书
2014年新教师工作总结
2014/11/08 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
Python中的套接字编程是什么?
2021/06/21 Python
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server