构建一个交互式锻炼卡片:记录和跟踪你的健身进度

应用场景介绍

对于健身爱好者来说,记录和跟踪他们的锻炼进度至关重要。我们的锻炼卡片是一个交互式工具,可以帮助用户轻松记录他们的锻炼,并可视化他们的进度。

代码基本功能介绍

我们的锻炼卡片具有以下功能:

  • **记录锻炼:**用户可以记录他们的锻炼名称、持续时间和次数。
  • **可视化进度:**锻炼记录将显示在卡片上,以可视化的方式展示用户的进度。
  • **标记完成:**用户可以标记锻炼为已完成,以跟踪他们的进展。
  • **开始锻炼按钮:**卡片包含一个按钮,允许用户开始他们的锻炼。

功能实现步骤及关键代码分析说明

1. 导入必要的依赖项

import { ref } from 'vue'

2. 定义锻炼数据

我们使用 Vue 的 ref 来管理锻炼数据,它是一个可变的响应式值。

const workoutList = ref([
  // 每个锻炼项包含名称、持续时间、次数和完成状态
])

3. 渲染锻炼卡片

我们使用 Vue 的模板语法来渲染锻炼卡片。它包含一个标题、一个锻炼列表和一个开始锻炼按钮。

<template>
  <div class="bg-purple-500 h-screen">
    <!-- 标题 -->
    <div class="flex justify-between items-center px-4 py-6">
      <div class="text-white text-2xl font-bold">Today's Workout</div>
      <!-- 用户头像和姓名 -->
      <div class="flex items-center">
        <img
          src="https://source.unsplash.com/random/24x24"
          alt="Avatar"
          class="rounded-full"
        />
        <div class="ml-2 text-white text-sm">Hi, User</div>
      </div>
    </div>
    <!-- 锻炼列表 -->
    <div class="bg-white rounded-t-3xl">
      <div class="px-4 py-6">
        <div class="flex items-center justify-between">
          <div class="text-purple-500 text-lg font-bold">5 min</div>
          <div class="text-gray-400 text-sm">|</div>
          <div class="text-purple-500 text-lg font-bold">15 reps</div>
        </div>
        <div class="mt-4">
          <!-- 每个锻炼项 -->
          <div class="flex items-center">
            <div class="w-2 h-2 rounded-full bg-purple-500 mr-2"></div>
            <div class="text-gray-400 text-sm">Warm Up</div>
          </div>
          <!-- ... -->
        </div>
      </div>
      <!-- 分隔线 -->
      <div class="border-t border-gray-200"></div>
      <!-- 开始锻炼按钮 -->
      <div class="px-4 py-6">
        <button
          class="bg-purple-500 text-white text-lg font-bold py-2 px-4 rounded-full w-full"
        >
          Start Workout
        </button>
      </div>
    </div>
  </div>
</template>

4. 标记锻炼为已完成

当用户点击一个锻炼项时,我们可以通过修改 isComplete 属性来标记它为已完成。

const handleWorkoutClick = (index) => {
  workoutList.value[index].isComplete = !workoutList.value[index].isComplete;
};

5. 开始锻炼

当用户点击开始锻炼按钮时,我们可以执行以下操作:

const handleStartWorkout = () => {
  // ... 执行开始锻炼的逻辑
};

总结与展望

通过开发这个锻炼卡片,我们展示了如何使用 Vue 构建一个交互式和可视化的健身跟踪器。

经验与收获:

  • 了解了 Vue 的响应式系统和数据绑定。
  • 掌握了使用 Vue 模板语法构建用户界面的技巧。
  • 理解了状态管理在交互式应用程序中的重要性。

未来拓展与优化:

  • **整合健身追踪器:**将卡片与健身追踪器集成,以自动记录锻炼数据。
  • **添加图表和统计数据:**提供可视化的进度图表和统计数据,以帮助用户跟踪他们的改进。
  • **社交分享:**允许用户分享他们的锻炼进度,以获得支持和激励。
Login
ECHO recommendation
ScriptEcho.ai

User Annotations

今天的训练计划