Vue实现倒计时小功能

yizhihongxing

Vue实现倒计时小功能的完整攻略

在Vue中实现倒计时小功能需要以下几个步骤:

  1. 引入Vue组件和相关依赖:首先我们需要在标签中引入Vue.js的相关文件。
<head>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
  1. 实现倒计时逻辑:我们可以在Vue实例中定义一个计时器,并在计时器回调中实现倒计时逻辑。
new Vue({
  el: '#app',
  data: {
    remainingTime: '00:00:00'
  },
  created() {
    setInterval(() => {
      const targetTime = new Date('2021-12-31 23:59:59');
      const currentTime = new Date();
      const remainingTime = targetTime - currentTime;
      const hours = Math.floor((remainingTime / 3600000) % 24);
      const minutes = Math.floor((remainingTime / 60000) % 60);
      const seconds = Math.floor((remainingTime / 1000) % 60);
      this.remainingTime = `${hours.toString().padStart(2, "0")}:${minutes.toString().padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`
    }, 1000)
  }
})

在以上代码中,我们定义了一个Vue实例,并在created生命周期中使用setInterval函数来定义计时器,每隔1秒钟计算一次倒计时并更新remainingTime属性,使得组件随着时间的变化而动态更新。

  1. 在模板中渲染计时器:最后我们需要在模板中将计时器的状态进行渲染。
<div id="app">
  <p>距离2022年元旦还有:</p>
  <h1>{{ remainingTime }}</h1>
</div>

在以上代码中,我们定义了一个<h1>标签来显示剩余时间。

示例1:实现一个倒计时按钮

除了在模板中直接展示倒计时,我们还可以实现一个倒计时按钮,在点击按钮后开始倒计时。以下是示例代码:

<template>
  <div>
    <button @click="startCountdown">开始倒计时</button>
    <p v-if="remainingTime">剩余时间:{{ remainingTime }}</p>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        remainingTime: '',
        timerId: null
      };
    },
    computed: {
      isCountingDown() {
        return this.remainingTime !== '';
      }
    },
    methods: {
      startCountdown() {
        const targetTime = new Date('2021-12-31 23:59:59');
        const currentTime = new Date();
        const remainingTime = targetTime - currentTime;
        const countDown = () => {
          const remainingTime = targetTime - new Date();
          if (remainingTime <= 0) {
            clearInterval(this.timerId);
            this.remainingTime = '';
            return;
          }
          const hours = Math.floor((remainingTime / 3600000) % 24);
          const minutes = Math.floor((remainingTime / 60000) % 60);
          const seconds = Math.floor((remainingTime / 1000) % 60);
          this.remainingTime = `${hours.toString().padStart(2, "0")}:${minutes.toString().padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
        };
        countDown();
        this.timerId = setInterval(countDown, 1000);
      }
    }
  };
</script>

在以上代码中,我们实现了一个<button>标签,在点击后开始倒计时。点击按钮后,我们定义了一个countDown函数来计算剩余时间,并使用setInterval函数来定义计时器,每隔1秒钟调用一次countDown函数,更新剩余时间。当倒计时结束后,我们清除计时器并将剩余时间设为空。

示例2:实现一个可自定义目标日期的倒计时组件

除了预先设置好目标日期,我们还可以实现一个带有自定义选项的倒计时组件。以下是示例代码:

<template>
  <div>
    <label>目标日期:</label>
    <input type="datetime-local" v-model="targetDate" @change="startCountdown" />
    <p v-if="remainingTime">剩余时间:{{ remainingTime }}</p>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        targetDate: '',
        remainingTime: '',
        timerId: null
      };
    },
    methods: {
      startCountdown() {
        const targetTime = new Date(this.targetDate);
        const countDown = () => {
          const remainingTime = targetTime - new Date();
          if (remainingTime <= 0) {
            clearInterval(this.timerId);
            this.remainingTime = '';
            return;
          }
          const hours = Math.floor((remainingTime / 3600000) % 24);
          const minutes = Math.floor((remainingTime / 60000) % 60);
          const seconds = Math.floor((remainingTime / 1000) % 60);
          this.remainingTime = `${hours.toString().padStart(2, "0")}:${minutes.toString().padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
        };
        countDown();
        this.timerId = setInterval(countDown, 1000);
      }
    }
  };
</script>

在以上代码中,我们定义了一个可自定义targetDate的倒计时组件。我们使用了<input>标签来让用户通过选择日期来设定目标日期,并使用@change事件来监听用户的选择。在用户选择后,我们根据选定日期计算剩余时间,并使用setInterval函数来定义计时器。每秒钟,我们更新剩余时间,当倒计时结束后,我们清除计时器并将剩余时间设为空。

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

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

相关文章

  • 使用electron将vue-cli项目打包成exe的方法

    下面是使用electron将vue-cli项目打包成exe的详细攻略: 1. 准备工作 在开始之前,你需要确保你的电脑已经安装了以下软件: Node.js npm包管理器 Vue CLI Git 其中,Node.js建议选择LTS版本,npm建议升级至最新版本。 2. 创建Vue项目 接下来,我们来创建一个Vue项目。在命令行中输入以下命令: vue cre…

    Vue 2023年5月28日
    00
  • JavaScript进阶(四)原型与原型链用法实例分析

    关于“JavaScript进阶(四)原型与原型链用法实例分析”的完整攻略,以下是详细讲解: 什么是原型 JavaScript 中的每个对象都有一个指向它的原型。原型是一个包含属性和方法的对象,它可以被用来共享那些在多个实例之间共享内容的属性和方法。当我们在一个实例中访问一个属性或者一个方法时,它会先在实例本身中查找该属性或方法,如果没有找到,就会去实例的原型…

    Vue 2023年5月28日
    00
  • React中的权限组件设计问题小结

    我将详细讲解“React中的权限组件设计问题小结”的完整攻略。首先,我们需要明确权限组件的概念和作用,权限组件用于控制用户在系统中的访问权限,保障系统的安全性和稳定性。在React中,我们可以使用高阶组件(HOC)来实现权限控制。 一、HOC高阶组件思路 1.定义一个高阶组件 我们首先需要定义一个高阶组件,用于封装特定的组件并添加权限控制逻辑。以下是一个基本…

    Vue 2023年5月28日
    00
  • 聊聊jenkins部署vue/react项目的问题

    下面我将为你详细讲解如何在Jenkins上进行Vue/React项目的部署,具体攻略如下: 环境准备 安装 Jenkins:根据所部署服务器的操作系统选择相应安装方式,安装 Jenkins 服务。 安装 Node.js:本文以 Node.js 为 JavaScript 运行环境。 安装 NPM:NPM 是 Node.js 的包管理工具,可以用它来引入项目依赖…

    Vue 2023年5月28日
    00
  • vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解

    下面详细讲解“vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解”的完整攻略。 1. vue-cli 3.0 与 3.0 以下版本的区别 1.1 脚手架版本 vue-cli 3.0 与 3.0 以下版本最明显的区别是使用的脚手架是不同的。vue-cli 3.0 使用的是 @vue/cli,而 3.0 以下版本使用的是 vue-cli。因此,安…

    Vue 2023年5月28日
    00
  • Vue动态扩展表头的表格及数据方式(数组嵌套对象)

    下面我会详细讲解“Vue动态扩展表头的表格及数据方式(数组嵌套对象)”的完整攻略。 介绍 在Vue框架中,我们经常需要用到表格组件。而有些情况下,我们需要动态扩展表格的表头,并且表格数据是数组嵌套对象的形式。这时,我们需要采用一定的技巧来实现这一功能。 实现步骤 安装依赖 首先,我们需要安装element-ui组件库,以及vue-router和axios等常…

    Vue 2023年5月28日
    00
  • mpvue开发音频类小程序踩坑和建议详解

    mpvue开发音频类小程序踩坑和建议详解 1. 前言 mpvue 是一个基于 Vue.js 核心的高性能小程序开发框架。它传承了 Vue.js 的语法风格和开发习惯,在小程序开发中尽可能的减少了学习成本和上手难度。同时,mpvue 利用 Webpack 和 Vue.js 的自身特性,将组件和业务逻辑代码进行分离抽离,维护更加方便易用。 在开发小程序中,音频类…

    Vue 2023年5月27日
    00
  • 详解vue 组件

    下面是一份详解Vue组件的攻略: 详解Vue 组件 什么是Vue组件? Vue组件是一个封装了HTML、CSS、JS代码的独立模块,可以被重复使用,一个页面通常由多个组件构成,每个组件对应一个独立区域的功能和样式。 Vue组件的优势有很多,例如减少了代码冗余、提高了程序的易读性和可维护性、增强了组件的复用性等。 如何创建一个Vue组件? 创建Vue组件主要有…

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