vue实现时间倒计时功能

以下是“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源码架构,包括Vue的整体架构、编译器、响应式系统和虚拟DOM。我们将会借助示例代码来详细讲解。本文假设你已经掌握了Vue的基础使用方法和概念。 Vue的整体架构 Vue的整体架构分为五个模块: 编译器:将模板转化为渲染函数,也包括AST树的生成和优化。 响应式系统:为data数据属性提供get/set方法,并且有…

    Vue 2023年5月28日
    00
  • Vue中接收二进制文件流实现pdf预览的方法

    要在Vue中接收二进制文件流实现pdf预览,需要考虑以下几个步骤: 发送请求获取二进制文件流 首先,需要使用Vue的异步请求库,例如axios,发送获取二进制文件流的请求。请求返回的数据类型是一个arraybuffer,需要注意设置responseType为arraybuffer。 示例代码: axios.get(‘http://example.com/fi…

    Vue 2023年5月28日
    00
  • vue如何使用vue slot封装公共组件

    下面我将详细讲解如何使用vue slot封装公共组件: 什么是Vue Slot? Vue Slot是Vue.js中一种非常流行且实用的特性,它允许我们将一个组件的内容插入到特定的插槽位置上。通过使用Vue Slot,我们可以轻松地封装一个可以扩展的、高度可定制的公共组件。 创建可复用的Vue组件 在使用Vue Slot封装公共组件之前,我们需要创建一个可复用…

    Vue 2023年5月28日
    00
  • vue2.0 computed 计算list循环后累加值的实例

    下面就为您详细讲解如何使用 Vue2.0 的 computed 计算属性来实现 list 循环后累加值的功能。 1. 简介 在 Vue.js 中,computed 属性是一种计算属性,它能够基于其它属性的值进行计算,并返回一个计算后的值。本文中将会通过 computed 属性来计算 list 循环后累加值的方法。 2. 实现步骤 2.1 数据源 首先,我们需…

    Vue 2023年5月29日
    00
  • vue路由传参接收以及传参对象为对象时的问题及解决

    下面是关于”Vue路由传参接收以及传参对象为对象时的问题及解决”的完整攻略: 路由传参 在Vue中,我们可以通过该框架提供的路由机制实现页面之间的跳转,而路由传参是一种常用的实现方式,可以让我们在不同组件之间传递数据。下面是两种常见的路由传参方式。 1. 动态路由传参 动态路由传参是通过URL参数来传递数据,参数可以包含在路由地址的路径中。例如: const…

    Vue 2023年5月27日
    00
  • Vue3响应式对象是如何实现的(1)

    当我们使用Vue3来开发应用程序时,我们可能会频繁地使用响应式对象。那么,Vue3响应式对象是如何实现的呢? 在Vue3中,响应式对象是通过使用Proxy对象来实现的。Proxy是ES6的一个新特性,可以用来拦截JavaScript对象的操作。通过使用Proxy对象,我们可以实现Vue3的响应式对象功能。 下面,让我们通过两个示例来详细讲解Vue3响应式对象…

    Vue 2023年5月27日
    00
  • JS封装通过className获取元素的函数示例

    那么我们来详细讲解一下如何通过JS封装函数来操作DOM元素并获取元素集合。 函数目的 我们希望封装一个函数,用于通过class名称来获取DOM元素,返回一个DOM元素或DOM元素集合. 函数实现 首先,我们需要知道获取DOM元素的方法,通常我们使用document的getElementsByClassName方法,但是这个方法返回的是一个HTMLCollec…

    Vue 2023年5月28日
    00
  • vue编写的功能强大的swagger-ui页面及使用方式

    什么是Swagger-UI页面? Swagger UI是一个通过注解的方式为 RESTful API 描述文档生成在线文档界面的工具。通过Swagger UI,我们可以详细地查看到API接口的信息,包括接口名称、接口描述、请求地址、请求方式、参数类型、参数描述、响应状态码等等。Swagger UI可以很方便地帮助我们对API接口进行测试与调试。 如何使用Vu…

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