当前位置:首页 > VUE

vue实现秒表组件

2026-03-29 04:24:58VUE

vue实现秒表组件

vue实现秒表组件

实现思路

Vue实现秒表组件主要依靠计算时间差、动态更新显示以及控制开始、暂停和重置功能。通过Date对象记录时间戳,结合setInterval实现计时功能。

核心代码实现

模板部分

<template>
  <div class="stopwatch">
    <div class="display">{{ formattedTime }}</div>
    <div class="controls">
      <button @click="start" :disabled="isRunning">Start</button>
      <button @click="pause" :disabled="!isRunning">Pause</button>
      <button @click="reset">Reset</button>
    </div>
  </div>
</template>

脚本部分

<script>
export default {
  data() {
    return {
      startTime: 0,
      elapsedTime: 0,
      isRunning: false,
      timerInterval: 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.timerInterval = setInterval(() => {
          this.elapsedTime = Date.now() - this.startTime
        }, 10)
        this.isRunning = true
      }
    },
    pause() {
      clearInterval(this.timerInterval)
      this.isRunning = false
    },
    reset() {
      clearInterval(this.timerInterval)
      this.isRunning = false
      this.elapsedTime = 0
    }
  }
}
</script>

样式部分

<style scoped>
.stopwatch {
  text-align: center;
  font-family: Arial, sans-serif;
}
.display {
  font-size: 3em;
  margin: 20px;
}
button {
  padding: 10px 20px;
  margin: 5px;
  font-size: 1em;
  cursor: pointer;
}
button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
</style>

功能说明

  • 开始计时:记录当前时间戳作为起点,通过setInterval每10毫秒更新一次时间差
  • 暂停计时:清除定时器并保留当前时间值
  • 重置计时:清除定时器并将时间归零
  • 时间显示:格式化为MM:SS.MS,自动补零保持两位数显示

优化建议

  1. 性能优化:将定时器间隔调整为requestAnimationFrame实现更流畅的动画效果
  2. 功能扩展:添加分段计时(Lap)功能,记录多个时间点
  3. 持久化:结合localStorage实现关闭页面后恢复上次计时状态

完整组件可直接复制使用,或通过npm install安装第三方库如vue-stopwatch获得更丰富功能。

标签: 秒表组件
分享给朋友:

相关文章

uniapp如何将底部导航组件化

uniapp如何将底部导航组件化

在 uniapp 中将底部导航组件化 将底部导航组件化可以提高代码复用性和维护性。以下是具体实现方法: 创建自定义底部导航组件 新建一个组件文件,例如 tab-bar.vue,放置在 compon…

Vue组件实现方法

Vue组件实现方法

Vue组件的基本实现 Vue组件是Vue.js的核心概念之一,允许将UI拆分为独立可复用的代码片段。组件的实现方式有多种,以下是常见的几种方法。 单文件组件(SFC) 单文件组件以.vue为后缀,将…

vue实现水印组件

vue实现水印组件

Vue 水印组件的实现方法 使用Canvas绘制水印 在Vue组件中通过Canvas动态生成水印图案,将其作为背景添加到目标元素上。 <template> <div ref="…

vue实现父子组件

vue实现父子组件

Vue 父子组件通信实现方式 1. 父组件向子组件传递数据(Props) 父组件通过 props 向子组件传递数据,子组件通过 props 接收数据。 父组件模板: <template>…

vue实现分页组件

vue实现分页组件

Vue 分页组件实现 基础分页组件结构 创建一个名为 Pagination.vue 的文件,包含以下基础模板和逻辑: <template> <div class="pagina…

vue实现搜索组件

vue实现搜索组件

Vue 实现搜索组件的方法 基础搜索组件实现 创建基础搜索组件需要包含输入框和搜索按钮。在Vue中可以使用v-model绑定输入值,通过@click或@keyup.enter触发搜索。 <te…