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

下面是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日

相关文章

  • Vue不能watch数组和对象变化解决方案

    Vue中的watch属性用于监控变量的变化并执行相应的操作,但是Vue默认不能直接监控数组和对象的变化。如果要监控数组和对象的变化需要使用特定的解决方案。 问题分析 Vue默认不支持watch数组和对象的变化是因为Vue实现了一个高效的响应式系统,它利用了ES6的Proxy特性来实现对数据的监控。但是Proxy不支持ie11以下的浏览器,因此对于不支持ES6…

    Vue 2023年5月28日
    00
  • TypeScript在vue中的使用解读

    TypeScript在Vue中的使用解读 为什么要使用TypeScript与Vue一起使用 Vue.js是一款前端开发框架,旨在简化前端开发的复杂性,提高代码的可读性和可维护性。另一方面,TypeScript是一种JavaScript的超集,可以提供编译时类型检查和更好的IDE支持等功能,可以让开发更加容易和稳定。 使用TypeScript和Vue.js一起…

    Vue 2023年5月28日
    00
  • 用vue写一个日历

    下面是用Vue写一个日历的完整攻略: 步骤一:创建Vue项目 首先需要用Vue CLI创建一个Vue项目。打开终端,执行以下命令: vue create vue-calendar 这个命令会创建一个名为vue-calendar的Vue项目,并且自动安装好了所需的依赖。 步骤二:安装日历组件库 为了快速开发日历组件,我们可以使用已有的日历组件库。这里我们选择v…

    Vue 2023年5月29日
    00
  • 解决vue3项目打包发布到服务器后访问页面显示空白问题

    为解决vue3项目打包发布到服务器后访问页面显示空白问题,可以采取以下步骤进行操作: 确认打包文件是否存在问题 在发布vue3项目之前,需要先执行打包操作生成相应文件,打包命令如下: npm run build 此时会在项目根目录下生成”dist”文件夹,用于存放打包后的文件。为确认打包文件是否存在问题,可以初步使用本地服务器进行验证,终端操作命令如下: n…

    Vue 2023年5月28日
    00
  • Vue Element前端应用开发之常规的JS处理函数

    Vue Element前端应用开发之常规的JS处理函数 在Vue Element前端应用开发中,JS处理函数是非常常见的。下面给出了一些常见JS处理函数的使用方法和示例。 1. 数组的过滤函数filter() 简介 filter() 是数组的一个常用方法,它返回一个新的被过滤后的数组,原数组不发生变化。 filter() 接受一个回调函数作为参数,该回调函数…

    Vue 2023年5月28日
    00
  • Vue之请求如何传递参数

    当我们通过Vue进行请求时,有时需要把一些参数传递给后端接口。在这里,我们可以采用两种方式来传递参数。下面将分别详细介绍这两种方式。 通过URL传递参数 通常,我们可以把参数直接拼接在请求的URL末尾,比如: axios.get(‘/api/user?id=1’) .then(function (response) { console.log(respons…

    Vue 2023年5月27日
    00
  • 一文搞懂VueJs中customRef函数使用

    一文搞懂VueJs中customRef函数使用 简介 Vue.js 3.0版本引入了一个新的api函数——customRef,用于创建一个自定义的ref。customRef的使用十分灵活。它允许你控制目标对象的依赖和副作用。在本文中,我们将探讨如何使用customRef函数。 基本用法 使用customRef函数,需要传入一个函数作为参数,这个函数有两个参数…

    Vue 2023年5月28日
    00
  • vue+node+webpack环境搭建教程

    Vue + Node + Webpack 环境搭建教程 本文详细讲解如何搭建 Vue + Node + Webpack 环境,以及相关的配置和注意事项。本教程中使用的框架版本如下: Vue.js:2.x Node.js:8.x Webpack:3.x 1. 安装 Node.js 在开始搭建前,首先需要安装 Node.js。Node.js 是一个基于 Chro…

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