当前位置:首页 > VUE

vue实现秒表

2026-03-28 01:02:39VUE

实现秒表功能

使用Vue实现秒表功能需要结合数据绑定、计算属性和定时器。以下是一个完整的实现方案:

创建Vue组件

<template>
  <div class="stopwatch">
    <div class="display">{{ formattedTime }}</div>
    <div class="controls">
      <button @click="start" :disabled="isRunning">开始</button>
      <button @click="stop" :disabled="!isRunning">停止</button>
      <button @click="reset">重置</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isRunning: false,
      startTime: 0,
      elapsedTime: 0,
      timer: null
    }
  },
  computed: {
    formattedTime() {
      const date = new Date(this.elapsedTime)
      const minutes = date.getUTCMinutes().toString().padStart(2, '0')
      const seconds = date.getUTCSeconds().toString().padStart(2, '0')
      const milliseconds = Math.floor(date.getUTCMilliseconds() / 10).toString().padStart(2, '0')
      return `${minutes}:${seconds}.${milliseconds}`
    }
  },
  methods: {
    start() {
      if (!this.isRunning) {
        this.startTime = Date.now() - this.elapsedTime
        this.timer = setInterval(this.updateTime, 10)
        this.isRunning = true
      }
    },
    stop() {
      if (this.isRunning) {
        clearInterval(this.timer)
        this.isRunning = false
      }
    },
    reset() {
      clearInterval(this.timer)
      this.isRunning = false
      this.elapsedTime = 0
    },
    updateTime() {
      this.elapsedTime = Date.now() - this.startTime
    }
  },
  beforeDestroy() {
    clearInterval(this.timer)
  }
}
</script>

<style scoped>
.stopwatch {
  text-align: center;
  margin: 20px;
}

.display {
  font-size: 3em;
  margin-bottom: 20px;
  font-family: monospace;
}

button {
  padding: 8px 16px;
  margin: 0 5px;
  font-size: 1em;
  cursor: pointer;
}

button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
</style>

功能说明

  1. 数据属性

    vue实现秒表

    • isRunning:跟踪秒表是否正在运行
    • startTime:记录开始时间戳
    • elapsedTime:存储经过的毫秒数
    • timer:存储定时器引用
  2. 计算属性

    vue实现秒表

    • formattedTime:将毫秒转换为"MM:SS.mm"格式的字符串
  3. 方法

    • start():启动秒表
    • stop():暂停秒表
    • reset():重置秒表
    • updateTime():更新经过的时间
  4. 生命周期钩子

    • beforeDestroy:组件销毁前清除定时器

使用方式

  1. 将此组件导入到需要使用的地方
  2. 在模板中使用<stopwatch></stopwatch>标签
  3. 秒表显示格式为"分钟:秒.毫秒"(如01:23.45)

进阶优化

  1. 添加圈数记录功能
  2. 实现不同主题样式
  3. 添加声音提示
  4. 支持键盘快捷键操作
  5. 将计时数据持久化到本地存储

这个实现提供了基本的秒表功能,可以根据具体需求进行扩展和定制。

标签: 秒表vue
分享给朋友:

相关文章

vue实现oauth

vue实现oauth

Vue 实现 OAuth 的步骤 安装必要的依赖 确保项目中安装了 axios 和 vue-router。OAuth 通常需要发送 HTTP 请求和处理路由跳转。 npm install axios…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue导航实现

vue导航实现

Vue 导航实现方法 在 Vue 中实现导航功能通常涉及路由配置、组件设计和状态管理。以下是几种常见的实现方式: 使用 Vue Router 实现基础导航 安装 Vue Router: npm i…

vue实现联动

vue实现联动

Vue 实现联动效果 联动效果通常指多个组件或表单元素之间相互影响,例如选择省份后动态加载城市列表。Vue 提供了多种方式实现联动,包括数据绑定、计算属性、侦听器等。 数据驱动联动 通过 Vue 的…

使用vue实现搜索

使用vue实现搜索

使用 Vue 实现搜索功能 基础搜索实现 在 Vue 中实现搜索功能通常涉及数据绑定、事件监听和列表过滤。以下是一个简单的实现方式: <template> <div>…

vue实现结算页面

vue实现结算页面

Vue 实现结算页面的核心步骤 数据绑定与表单验证 使用 Vue 的 v-model 绑定表单数据,例如收货地址、支付方式等。通过 Vue 的 computed 属性计算总价,结合 v-if 或 v-…