vue 倒计时 插件_vue中实现倒计时组件与毫秒效果
时分秒倒计时组件
template
{{ getHours1 }}
{{ getHours2 }}
:
{{ getMinutes1 }}
{{ getMinutes2 }}
:
{{ getSeconds1 }}
{{ getSeconds2 }}
{{clocker}}
script
export default {
name: 'downTime',
props: { // 接收父组件传递过来的参数,这里传了 结束时间 - 开始时间 - 结束后显示的内容
endTime: {
type: Number
},
startTime: {
type: Number
},
endMsg: {
type: String
}
},
data () {
return {
isShow: false, // 控制显示结束或还未结束显示的内容
clocker: '', // 结束后显示的内容
timeObj: null, // 时间对象,下方会用到
myDay: 0, // 我定义来接收计算出来的 天 的
myHours: 0, // 我定义来接收计算出来的 小时 的
myMinutes: 0, // 我定义来接收计算出来的 分钟 的
mySeconds: 0// 我定义来接收计算出来的 秒钟 的
}
},
computed: {
getHours1 () {
return this.myHours < 10 ? 0 : parseInt((this.myHours % 100) / 10)
},
getHours2 () {
return parseInt(this.myHours % 10)
},
getMinutes1 () {
return this.myMinutes < 10 ? 0 : parseInt((this.myMinutes % 100) / 10)
},
getMinutes2 () {
return parseInt(this.myMinutes % 10)
},
getSeconds1 () {
return this.mySeconds < 10 ? 0 : parseInt((this.mySeconds % 100) / 10)
},
getSeconds2 () {
return parseInt(this.mySeconds % 10)
}
},
mounted () {
},
methods: {
option () {
// 计算时间差
let timeLag = (this.endTime - this.startTime) / 1000
// 判断当前是否时分秒的值是否大于10
const add = num => {
return num < 10 ? '0' + num : num
}
// 时间倒计时运算的方法
const timeFunction = () => {
const time = timeLag--
this.timeObj = { // 时间对象
seconds: Math.floor(time % 60),
minutes: Math.floor(time / 60) % 60,
hours: Math.floor(time / 60 / 60) % 24,
days: Math.floor(time / 60 / 60 / 24)
}
// 计算出时分秒
this.myDay = `${add(this.timeObj.days)}`
this.myHours = `${add(this.timeObj.hours)}`
this.myMinutes = `${add(this.timeObj.minutes)}`
this.mySeconds = `${add(this.timeObj.seconds)}`
// 当时间差小于等于0时,停止倒计时
if (time <= 0) {
this.isShow = true
this.clocker = this.endMsg
clearInterval(go)
}
}
// 开始执行倒计时
timeFunction()
// 每一秒执行一次
const go = setInterval(() => {
timeFunction()
}, 1000)
}
},
watch: {
endTime: {
handler (newName, oldName) {
this.option()
},
immediate: true,
deep: true
}
}
}
备注:我将时分秒使用计算属性分成了个位和十位两部分展示,在watch中深度监听endTime属性的变化并重新调用定时器
style
.downTime-wrapper{
display: inline-block;
.dian {
font-weight: bold;
position: relative;
top: -5px;
}
.hour{
display: inline-block;
font-size: 36px;
span {
border-radius:6px;
color: #FFFFFF;
background:rgba(27,23,22,1);
padding: 1px 10px;
margin: 0 2px;
}
}
.minute{
display: inline-block;
font-size: 36px;
span {
border-radius:6px;
color: #FFFFFF;
background:rgba(27,23,22,1);
padding: 1px 10px;
margin: 0 2px;
}
}
.second {
display: inline-block;
font-size: 36px;
margin-top: -5px;
span {
border-radius:6px;
color: #FFFFFF;
background:rgba(27,23,22,1);
padding: 1px 10px;
margin: 0 2px;
}
}
}
使用
在页面中引入并注册后即可使用
:endTime="item.endTime"
:startTime="new Date().getTime()"
:endMsg="item.endMsg">
毫秒倒计时效果
在template中加入
:00
声明timeDt方法
methods: {
timeDt () {
this.timer1 = setTimeout(function () {
var haomiao = 99
document.getElementById('timehs').innerHTML = ':' + haomiao
this.timer2 = setInterval(function () {
const timehs = document.getElementById('timehs')
if (timehs) {
timehs.innerHTML = `:${haomiao < 10 ? `0${haomiao}` : haomiao}`
}
haomiao--
if (haomiao < 0) {
haomiao = 99
}
}, 10)
}, 1000)
}
}
在create生命周期函数中调用timeDt方法
created () {
this.$nextTick(() => {
this.timeDt()
})
},
vue 倒计时 插件_vue中实现倒计时组件与毫秒效果相关推荐
- vue 倒计时 插件_Vue学习笔记-倒计时插件
安装 1.cnpm/npm npm install vue2-countdown --save 2.Git 下载源码 git clone https://github.com/cgygd/vue2-c ...
- layer中嵌套的页面如何操作父页面_vue中8种组件通信方式,值得收藏
有不少网友提出组件之间通信方式还有很多, 这篇文章便是专门总结组件之间通信的 vue是数据驱动视图更新的框架, 所以对于vue来说组件间的数据通信非常重要,那么组件之间如何进行数据通信的呢? 首先我们 ...
- vue 手风琴组件_Vue 使用Element-ui table组件实现手风琴效果
利用Element-UI提供的表格组件做成手风琴效果, 即同时只能有一个行展开 效果展示 手风琴效果 版本说明 "vue": "^2.6.11", " ...
- php++倒计时插件下载,jQuery实现倒计时插件
本文将使用jQuery开发一个倒计时效果插件,使用这个插件你可以生成一个非常炫的倒计时器,你可以方便的整合到你需要的web功能模块中,希望大家喜欢! 以下代码将演示如何调用上述插件: $(functi ...
- vue list添加元素_Vue简单入门及组件的简单使用
1.第一个Vue程序 注意Vue的版本,不同版本的语法可能不同. html><html><head> <title>VUE第一个实例title>head ...
- 加载vue文件步骤_vue中.vue文件解析步骤详解
这次给大家带来vue中.vue文件解析步骤详解,vue中.vue文件解析的注意事项有哪些,下面就是实战案例,一起来看一下. 我们平时写的 .vue 文件称为 SFC(Single File Compo ...
- html富文本编辑器插件_vue中使用vuequilleditor富文本编辑器
点击上方"小姚同学技术栈"快速关注我哟! vue-quill-editor是一个基于quill.适用于vue的富文本编辑器开源项目,支持服务端渲染和单页应用.目前项目热度还算可以, ...
- vue map遍历_vue中内嵌百度地图
1.申请百度地图秘钥 在vue项目的index.html文件中引入 <script src="//api.map.baidu.com/api?v=2.0&ak=您的秘钥&quo ...
- vue 心跳监控_Vue中WebSocket加入心跳机制
import { collectService } from '@/services'; export default { prop: ['formWhere'], data() { return { ...
最新文章
- java的Serialization 机制
- CTFshow php特性 web89
- 编程之美-重建二叉树方法整理
- 【重要】有三AI视频直播间上线,100余小时AI课程等你来学
- java跳转语句包含goto_Java 的跳转语句中 _______( 包含 / 不包含 )goto 语句。_学小易找答案...
- SharePoint Server 2007 简单安装指南
- LeetCode228场周赛解题报告
- centos 7 vs centos6 的不同
- 系统集成Nacos和Feign
- 博弈论基础知识--非合作博弈,零和博弈,负和博弈,主从博弈,Nash均衡
- 基于微信小程序的智能填表工具软件系统
- Android RabbitMQ使用之RabbitMQ安装及配置
- c语言中输入数组时用不用加地址符,C语言中,用格式符”%s”输入字符数组时,数组名前不能加。...
- 【微信小程序云开发 云数据库 云函数 云存储】
- 14岁女孩寒夜蹭网上课看哭众人:不吃读书的苦,就要吃生活的苦
- 机器人识别抓取笔记(基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计:综述)
- Kurento应用开发指南(以Kurento 5.0为模板) 之四:示例教程 一对一视频呼叫
- ue4 小知识点 als advanced locomotion system v4 foot ik 坑
- 软件工程学生考试系统
- TEQC数据处理与质量分析
热门文章
- 中年人在“洗脑课”上迷了路
- mysql checking permissions 优化_MySQL 之数据库优化
- html 下标签,html标签下
- 绿联 蓝牙适配器 linux,绿联蓝牙适配器
- pandas pivot 占比_数据处理进阶pandas入门(十八)
- 简易计算器 (C语言)作业
- python 美化输出 错误 警告等信息_OpenCV抑制、隐藏或禁用输出到屏幕的错误或警告消息...
- MIPS介绍与MIPS汇编的常用指令
- 从windows上传到linux服务器的php图片生成不了,windows10上用thinkphp5开发程序上传服务器后出现图片异常的问题...
- Python urllib与requests、XML和HTMLParser