时分秒倒计时组件

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中实现倒计时组件与毫秒效果相关推荐

  1. vue 倒计时 插件_Vue学习笔记-倒计时插件

    安装 1.cnpm/npm npm install vue2-countdown --save 2.Git 下载源码 git clone https://github.com/cgygd/vue2-c ...

  2. layer中嵌套的页面如何操作父页面_vue中8种组件通信方式,值得收藏

    有不少网友提出组件之间通信方式还有很多, 这篇文章便是专门总结组件之间通信的 vue是数据驱动视图更新的框架, 所以对于vue来说组件间的数据通信非常重要,那么组件之间如何进行数据通信的呢? 首先我们 ...

  3. vue 手风琴组件_Vue 使用Element-ui table组件实现手风琴效果

    利用Element-UI提供的表格组件做成手风琴效果, 即同时只能有一个行展开 效果展示 手风琴效果 版本说明 "vue": "^2.6.11", " ...

  4. php++倒计时插件下载,jQuery实现倒计时插件

    本文将使用jQuery开发一个倒计时效果插件,使用这个插件你可以生成一个非常炫的倒计时器,你可以方便的整合到你需要的web功能模块中,希望大家喜欢! 以下代码将演示如何调用上述插件: $(functi ...

  5. vue list添加元素_Vue简单入门及组件的简单使用

    1.第一个Vue程序 注意Vue的版本,不同版本的语法可能不同. html><html><head> <title>VUE第一个实例title>head ...

  6. 加载vue文件步骤_vue中.vue文件解析步骤详解

    这次给大家带来vue中.vue文件解析步骤详解,vue中.vue文件解析的注意事项有哪些,下面就是实战案例,一起来看一下. 我们平时写的 .vue 文件称为 SFC(Single File Compo ...

  7. html富文本编辑器插件_vue中使用vuequilleditor富文本编辑器

    点击上方"小姚同学技术栈"快速关注我哟! vue-quill-editor是一个基于quill.适用于vue的富文本编辑器开源项目,支持服务端渲染和单页应用.目前项目热度还算可以, ...

  8. vue map遍历_vue中内嵌百度地图

    1.申请百度地图秘钥 在vue项目的index.html文件中引入 <script src="//api.map.baidu.com/api?v=2.0&ak=您的秘钥&quo ...

  9. vue 心跳监控_Vue中WebSocket加入心跳机制

    import { collectService } from '@/services'; export default { prop: ['formWhere'], data() { return { ...

最新文章

  1. java的Serialization 机制
  2. CTFshow php特性 web89
  3. 编程之美-重建二叉树方法整理
  4. 【重要】有三AI视频直播间上线,100余小时AI课程等你来学
  5. java跳转语句包含goto_Java 的跳转语句中 _______( 包含 / 不包含 )goto 语句。_学小易找答案...
  6. SharePoint Server 2007 简单安装指南
  7. LeetCode228场周赛解题报告
  8. centos 7 vs centos6 的不同
  9. 系统集成Nacos和Feign
  10. 博弈论基础知识--非合作博弈,零和博弈,负和博弈,主从博弈,Nash均衡
  11. 基于微信小程序的智能填表工具软件系统
  12. Android RabbitMQ使用之RabbitMQ安装及配置
  13. c语言中输入数组时用不用加地址符,C语言中,用格式符”%s”输入字符数组时,数组名前不能加。...
  14. 【微信小程序云开发 云数据库 云函数 云存储】
  15. 14岁女孩寒夜蹭网上课看哭众人:不吃读书的苦,就要吃生活的苦
  16. 机器人识别抓取笔记(基于视觉的机器人抓取——从物体定位、物体姿态估计到平行抓取器抓取估计:综述)
  17. Kurento应用开发指南(以Kurento 5.0为模板) 之四:示例教程 一对一视频呼叫
  18. ue4 小知识点 als advanced locomotion system v4 foot ik 坑
  19. 软件工程学生考试系统
  20. TEQC数据处理与质量分析

热门文章

  1. 中年人在“洗脑课”上迷了路
  2. mysql checking permissions 优化_MySQL 之数据库优化
  3. html 下标签,html标签下
  4. 绿联 蓝牙适配器 linux,绿联蓝牙适配器
  5. pandas pivot 占比_数据处理进阶pandas入门(十八)
  6. 简易计算器 (C语言)作业
  7. python 美化输出 错误 警告等信息_OpenCV抑制、隐藏或禁用输出到屏幕的错误或警告消息...
  8. MIPS介绍与MIPS汇编的常用指令
  9. 从windows上传到linux服务器的php图片生成不了,windows10上用thinkphp5开发程序上传服务器后出现图片异常的问题...
  10. Python urllib与requests、XML和HTMLParser