对于健身爱好者来说,记录和跟踪他们的锻炼进度至关重要。我们的锻炼卡片是一个交互式工具,可以帮助用户轻松记录他们的锻炼,并可视化他们的进度。
我们的锻炼卡片具有以下功能:
import { ref } from 'vue'
我们使用 Vue 的 ref
来管理锻炼数据,它是一个可变的响应式值。
const workoutList = ref([
// 每个锻炼项包含名称、持续时间、次数和完成状态
])
我们使用 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>
当用户点击一个锻炼项时,我们可以通过修改 isComplete
属性来标记它为已完成。
const handleWorkoutClick = (index) => {
workoutList.value[index].isComplete = !workoutList.value[index].isComplete;
};
当用户点击开始锻炼按钮时,我们可以执行以下操作:
const handleStartWorkout = () => {
// ... 执行开始锻炼的逻辑
};
通过开发这个锻炼卡片,我们展示了如何使用 Vue 构建一个交互式和可视化的健身跟踪器。
经验与收获:
未来拓展与优化: