vue实现时间倒计时功能

yizhihongxing

以下是“vue实现时间倒计时功能”的完整攻略,希望能对您有所帮助。

基本思路

Vue 实现时间倒计时功能的基本思路是:获取倒计时的起始时间和结束时间,然后通过 setInterval 函数计算时间差并更新视图上的倒计时剩余时间。

具体步骤

1.在Vue组件中定义起始时间和结束时间。

data() {
  return {
    startTime: new Date('2021-08-01 00:00:00').getTime(),
    endTime: new Date('2021-08-10 18:00:00').getTime(),
    restTime: {}
  }
},

2.计算时间差,更新剩余时间。

computed: {
  getTimeRemain() {
    let seconds = Math.floor((this.endTime - new Date().getTime()) / 1000)
    if (seconds <= 0) return false
    let rest = {}
    rest.hours = Math.floor(seconds / 3600)
    rest.minutes = Math.floor((seconds - rest.hours * 3600) / 60)
    rest.seconds = seconds - rest.hours * 3600 - rest.minutes * 60
    this.restTime = rest
    return true
  }
},

3.使用 setInterval 函数更新视图上的倒计时时间。

showTime() {
  setInterval(() => {
    this.getTimeRemain;
  }, 1000)
}

4.在模板中渲染出倒计时时间。

<p>{{ restTime.hours }}小时{{ restTime.minutes }}分钟{{ restTime.seconds }}秒</p>

示例说明

下面介绍两个示例来说明 Vue 实现时间倒计时功能。

示例1

假设现在是2021年8月1日,要实现一个倒计时,显示从现在到 2021年8月10日下午6点的倒计时时间。

<template>
  <div>
    <p v-if="getTimeRemain">
      {{ restTime.hours }}小时{{ restTime.minutes }}分钟{{ restTime.seconds }}秒
    </p>
    <p v-else>倒计时结束</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      startTime: new Date().getTime(),
      endTime: new Date('2021-08-10 18:00:00').getTime(),
      restTime: {}
    }
  },
  computed: {
    getTimeRemain() {
      let seconds = Math.floor((this.endTime - new Date().getTime()) / 1000)
      if (seconds <= 0) return false
      let rest = {}
      rest.hours = Math.floor(seconds / 3600)
      rest.minutes = Math.floor((seconds - rest.hours * 3600) / 60)
      rest.seconds = seconds - rest.hours * 3600 - rest.minutes * 60
      this.restTime = rest
      return true
    }
  },
  mounted() {
    setInterval(() => {
      this.getTimeRemain;
    }, 1000)
  }
}
</script>

示例2

假设现在是2021年8月1日,要实现一个倒计时,显示从现在到 2021年8月10日下午6点的剩余小时数。

<template>
  <div>
    <p v-if="getTimeRemain">
      剩余时间:{{ restTime.hours }}小时
    </p>
    <p v-else>倒计时结束</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      startTime: new Date().getTime(),
      endTime: new Date('2021-08-10 18:00:00').getTime(),
      restTime: {}
    }
  },
  computed: {
    getTimeRemain() {
      let seconds = Math.floor((this.endTime - new Date().getTime()) / 1000)
      if (seconds <= 0) return false
      let rest = {}
      rest.hours = Math.floor(seconds / 3600)
      this.restTime = rest
      return true
    }
  },
  mounted() {
    setInterval(() => {
      this.getTimeRemain;
    }, 1000)
  }
}
</script>

这两个示例都演示了如何通过Vue计算倒计时剩余时间,第一个示例展示了如何渲染出剩余时间的小时,分钟和秒数,第二个示例只展示了小时数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue实现时间倒计时功能 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Vue组件与生命周期详细讲解

    Vue组件与生命周期详细讲解 Vue.js是一款轻量级MVVM框架,由于其简洁易上手的特性,越来越多的开发者开始关注和使用它。Vue.js组件与生命周期是Vue.js开发中的重要概念,本文将对其进行详细讲解。 Vue组件 Vue组件是Vue.js中一个独立的模块,它可以封装HTML、CSS代码和JavaScript代码,用来实现某一个特定的功能。Vue组件的…

    Vue 2023年5月29日
    00
  • 一文带你详细了解Vue中的v-for

    一文带你详细了解Vue中的v-for 介绍 Vue.js 是一个流行的前端框架,它提供了一个强大的指令,即 v-for。使用 v-for 可以轻松地在 Vue 中循环渲染一个数据数组或对象的属性列表。 基础语法 一个基本的 v-for 呈现元素的语法如下所示: <ul> <li v-for="(item, index) in it…

    Vue 2023年5月27日
    00
  • vue.js Table 组件自定义列宽实现核心方法

    首先讲解一下如何自定义vue.js Table组件的列宽。 1. 确定列宽方式 在开始自定义列宽之前,我们需要明确列宽的计算方式。vue.js Table组件提供了三种列宽计算方式: border(边界):该方式是默认方式,单元格的宽度由单元格边框宽度和表格边框宽度共同决定。 width(固定宽度):该方式是将单元格宽度设置为一个固定的宽度。 min-wid…

    Vue 2023年5月27日
    00
  • 浅析Vue 防抖与节流的使用

    当我们在使用 Vue.js 开发 Web 应用时,我们经常会碰到需要处理频繁触发的事件或异步请求的需求,例如输入框连续输入、窗口 resize 等,这些事件的频繁触发可能会导致应用程序的性能问题。在这种情况下,我们可以使用防抖和节流来限制这些事件的触发次数,以优化应用程序的性能。 什么是防抖和节流 防抖和节流都是关于限制事件触发次数的技术。 防抖(Debou…

    Vue 2023年5月29日
    00
  • springboot如何使用vue打包过的页面资源

    为了方便说明,这里将“springboot如何使用vue打包过的页面资源”分为两大部分:前端资源打包和后端资源引入。下面对这两部分进行详细讲解。 一、前端资源打包 1.1 环境准备 在进行前端资源打包之前,需要先安装vue-cli和项目依赖。具体步骤如下: 安装Node.js和npm(已安装可跳过); 使用npm安装vue-cli: bash npm ins…

    Vue 2023年5月28日
    00
  • Sublime Text新建.vue模板并高亮(图文教程)

    下面我将为你详细讲解“Sublime Text新建.vue模板并高亮(图文教程)”的攻略: Sublime Text新建.vue模板并高亮(图文教程) 1. 下载Vue Syntax Highlight插件 首先,在Sublime Text中安装Vue Syntax Highlight插件。可以选择在菜单栏中选择“Preferences” -> “Pa…

    Vue 2023年5月28日
    00
  • 解析Vue2 dist 目录下各个文件的区别

    Vue2 是一款流行的 JavaScript 前端框架,它的 dist 目录下包含了多个文件,每个文件都有自己的职责和用途。下面我将详细讲解 Vue2 dist 目录下各个文件的区别。 vue.js vue.js 文件是最基本的 Vue2 库文件,包含了 Vue 的核心代码和各种插件。如果你只想使用 Vue 就可以将这个文件添加到你的 HTML 文件中,然后…

    Vue 2023年5月28日
    00
  • webpack+vue.js实现组件化详解

    Webpack和Vue.js是现代化的前端开发工具,结合使用可以实现组件化的开发,提高项目的可维护性和开发效率。下面是利用Webpack和Vue.js实现组件化开发的详细攻略。 1. 环境准备 首先,需要安装Webpack和Vue.js。可以使用npm命令进行安装: npm install webpack vue vue-loader vue-templat…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部