Vue写一个简单的倒计时按钮功能

yizhihongxing

下面是Vue写一个简单的倒计时按钮功能的完整攻略。

步骤一:创建Vue实例

首先,在HTML文件中引入Vue.js库,并在JS文件中创建一个Vue实例。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Vue Countdown Button</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <button v-on:click="startCountdown">Start Countdown</button>
    </div>
    <script src="countdown.js"></script>
  </body>
</html>
// countdown.js
var app = new Vue({
  el: '#app',
  data: {
    countdown: 10,
    isCounting: false
  },
  methods: {
    startCountdown: function() {
      if (!this.isCounting) {
        this.isCounting = true;
        this.countdownTimer = setInterval(() => {
          if (this.countdown > 0) {
            this.countdown--;
          } else {
            clearInterval(this.countdownTimer);
            this.isCounting = false;
          }
        }, 1000);
      }
    }
  }
});

步骤二:实现倒计时功能

在步骤一的Vue实例中,我们定义了两个数据属性,分别是倒计时时间(countdown)和计时器是否在运行(isCounting),并且定义了一个开始倒计时的方法(startCountdown)。

这个方法首先检查计时器是否正在运行,如果是就不做任何事情,如果不是就开始倒计时。在倒计时过程中,我们使用setInterval函数来每秒减少一秒的时间,直到时间减少到0,清除计时器并将isCounting属性设为false

我们可以把这个方法绑定到一个按钮的点击事件上。例如,我们在div标签中添加一个按钮,点击按钮执行startCountdown方法。

<div id="app">
  <button v-on:click="startCountdown">Start Countdown</button>
  <p v-if="isCounting">Countdown: {{ countdown }}</p>
</div>

在这里,我们绑定了一个v-if指令来显示当前倒计时的时间,只有在计时器正在运行时才会显示。

步骤三:添加样式

你可能会希望自己的按钮和倒计时在页面上显得更加美观。我们可以使用内联CSS样式对按钮和倒计时进行定制。

<style>
  button {
    padding: 10px 20px;
    background-color: #3498db;
    color: #fff;
    border: none;
    font-size: 16px;
    border-radius: 5px;
  }
  button:hover {
    cursor: pointer;
    background-color: #2980b9;
  }
  p {
    font-size: 24px;
    margin-top: 20px;
  }
</style>

示例

下面是两个简单的例子,展示了如何使用Vue编写具有倒计时和按钮的代码。

示例一:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Vue Countdown Button Example 1</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
      button {
        padding: 10px 20px;
        background-color: #3498db;
        color: #fff;
        border: none;
        font-size: 16px;
        border-radius: 5px;
      }
      button:hover {
        cursor: pointer;
        background-color: #2980b9;
      }
      p {
        font-size: 24px;
        margin-top: 20px;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <button v-on:click="startCountdown" v-bind:disabled="isCounting">{{ buttonText }}</button>
      <p v-if="isCounting">Countdown: {{ countdown }}</p>
    </div>
    <script src="countdown.js"></script>
  </body>
</html>
// countdown.js
var app = new Vue({
  el: '#app',
  data: {
    countdown: 10,
    isCounting: false,
    buttonText: 'Start Countdown'
  },
  methods: {
    startCountdown: function() {
      if (!this.isCounting) {
        this.isCounting = true;
        this.buttonText = 'Stop Countdown';
        this.countdownTimer = setInterval(() => {
          if (this.countdown > 0) {
            this.countdown--;
          } else {
            clearInterval(this.countdownTimer);
            this.isCounting = false;
            this.buttonText = 'Start Countdown';
          }
        }, 1000);
      } else {
        clearInterval(this.countdownTimer);
        this.isCounting = false;
        this.buttonText = 'Start Countdown';
        this.countdown = 10;
      }
    }
  }
});

示例二:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Vue Countdown Button Example 2</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
      button {
        padding: 10px 20px;
        background-color: #3498db;
        color: #fff;
        border: none;
        font-size: 16px;
        border-radius: 5px;
      }
      button:hover {
        cursor: pointer;
        background-color: #2980b9;
      }
      p {
        font-size: 24px;
        margin-top: 20px;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <button v-on:click="startCountdown">Start Countdown</button>
      <p v-if="isCounting">Countdown: {{ countdown }}</p>
    </div>
    <script src="countdown.js"></script>
  </body>
</html>
// countdown.js
var app = new Vue({
  el: '#app',
  data: {
    countdown: 30,
    isCounting: false
  },
  methods: {
    startCountdown: function() {
      if (!this.isCounting) {
        this.isCounting = true;
        this.countdownTimer = setInterval(() => {
          if (this.countdown > 0) {
            this.countdown--;
          } else {
            clearInterval(this.countdownTimer);
            this.isCounting = false;
          }
        }, 1000);
      }
    }
  }
});

以上就是Vue写一个简单的倒计时按钮功能的完整攻略。希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue写一个简单的倒计时按钮功能 - Python技术站

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

相关文章

  • 详解Webstorm 新建.vue文件支持高亮vue语法和es6语法

    下面是详解Webstorm 新建.vue文件支持高亮vue语法和es6语法的完整攻略: 问题描述 在使用Webstorm开发Vue项目的过程中,新建.vue文件后发现并没有默认支持高亮vue语法和es6语法,这给我们带来了不小的困扰,那么应该如何解决呢? 解决方案 安装Vue插件 为了支持高亮Vue语法和ES6语法,我们首先需要安装Vue插件,可以打开Web…

    Vue 2023年5月28日
    00
  • vue 如何添加全局函数或全局变量以及单页面的title设置总结

    根据您的需求,我会详细讲解“Vue 如何添加全局函数或全局变量以及单页面的 title 设置总结”的完整攻略,包含两个示例用于进一步说明。 一、Vue 如何添加全局函数或全局变量 在 Vue 中,我们可以方便地在全局使用自定义函数和变量,这样可以简化业务逻辑,提高开发效率。以下是实现此功能的方法: 1.1 添加全局函数 在 Vue 中添加全局函数的方式是通过…

    Vue 2023年5月28日
    00
  • Vue实战之掌握自定义指令

    下面是Vue实战之掌握自定义指令的完整攻略: 1. 自定义指令的作用及使用场景 自定义指令是Vue中一个非常重要的功能,它可以让我们自定义DOM操作行为,比如让元素获取焦点、滚动到指定位置、自动聚焦等。自定义指令的使用场景非常广泛,比如: 在表单中监听输入框焦点事件,根据输入框的类型来动态切换键盘类型; 在移动端页面中使用Better-Scroll滚动插件时…

    Vue 2023年5月27日
    00
  • vue转react入门指南

    感谢您关注我们网站的内容。下面是针对“vue转react入门指南”的完整攻略,希望对您有所帮助。 1. 概述 Vue和React都是当前非常流行的前端框架。如果您熟悉Vue框架,想要学习React框架,可以参考本篇指南。本指南将从以下几个方面帮助您入门React: 认识React框架 学习React的核心概念 手写几个React组件实例 理解React生命周…

    Vue 2023年5月28日
    00
  • vue实现指定区域自由拖拽、打印功能

    实现指定区域自由拖拽、打印功能的攻略如下: 准备 安装Vue和Vue-draggable插件 npm install vue vue-draggable 自由拖拽 在Vue的template中,使用vue-draggable插件的vuedraggable组件定义拖拽区域。 <template> <div> <h1>可拖拽项…

    Vue 2023年5月28日
    00
  • vue组件传值(高级)、属性传值、反向传值、跨级传值实例详解

    Vue组件传值(高级)、属性传值、反向传值、跨级传值实例详解 在Vue中,组件传值是必不可少的一部分。组件间的传值分为父子组件传值、同级组件传值以及跨级传值等等,下面将详细介绍Vue组件传值的不同方式和实例。 属性传值 属性传值是父组件向子组件传递数据的一种方式,通过在父组件中使用子组件时设置props属性并传入数据,子组件在接收到数据后可以通过this.p…

    Vue 2023年5月27日
    00
  • Vue中的Strorage本地化存储详解

    Vue中的Storage本地化存储详解 在Vue中,为了提高Web应用程序的性能,我们通常会使用Storage本地化存储技术来存储和管理数据。Storage对象提供了一种存储键/值对的方式,可以通过键来获取、添加、删除以及查询存储的数据,它提供了两种类型:sessionStorage和localStorage,它们的区别在于存储数据的生命周期不同。 sess…

    Vue 2023年5月27日
    00
  • Vue页面骨架屏注入方法

    Vue页面骨架屏注入方法是一种性能优化的策略,可以让页面在加载数据的过程中显示出一个占位符,给用户提供更好的体验。下面是一个石乐志的攻略,包含具体的流程和示例说明。 步骤一:安装骨架屏插件 首先,你需要安装一个 Vue 骨架屏插件。我们推荐使用 vue-skeleton-webpack-plugin 或 page-skeleton-webpack-plugi…

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