当前位置: 首页 > news >正文

Datawhale-AI活动2024.12.24

目录

  • 一、番茄时钟
    • (1)输入Prompt
    • (2)创建 HTML 文件
      • 解析1:HTML结构
      • 解析2:计时器内容
      • 解析3:按钮区域
      • 解析4:脚本引用
    • (3)使用JavaScript实现时钟功能
      • 解析1:变量声明
      • 解析2:updateTimer 函数
      • 解析3:startTimer 函数
      • 解析4:pauseTimer 函数——暂停计时器
      • 解析5:resetTimer 函数——重置计时器
      • 解析6:事件监听
      • 解析7:初始调用

说明:这是在MarsCode平台经过调试的版本,最初按照Prompt并没有直接实现。

一、番茄时钟

在这里插入图片描述

(1)输入Prompt

请你基于html、tailwind css和javascript,帮我设计一个“番茄时钟”。要求UI简洁美观大方,同时具有呼吸感,点击开始计时、点击暂停计时和重置计时的功能能够完美实现

(2)创建 HTML 文件

这个HTML页面是一个简单的番茄时钟界面,包含:
一个标题:番茄钟。
一个显示计时器倒计时的区域(id=“timer”)。
三个按钮:开始、暂停和重置。
通过TailwindCSS进行布局和样式的设计,并使用外部JavaScript文件(script.js)来处理逻辑。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>番茄时钟</title><link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet"><script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100 flex items-center justify-center h-screen"><div class="bg-white p-8 roundedshadow-md w-96"><h1 class="text-6xl font-bold text-gray-800">番茄钟</h1><div class="flex flex-col mt-4"><div id="timer" class="text-6xl font-bold text-gray-800"></div></div><div class="flex mt-4"><button id="start" class="bg-green-500 hover:bg-green-600 text-white font-bold py-2 px-4 rounded mr-2">开始</button><button id="pause" class="bg-yellow-500 hover:bg-yellow-600 text-white font-bold py-2 px-4 rounded mr-2">暂停</button><button id="reset" class="bg-red-500 hover:bg-red-600 text-white font-bold py-2 px-4 rounded">重置</button></div><script src="script.js"></script></div>
</body>
</html>

解析1:HTML结构

<!DOCTYPE html>定义了文档类型,表示这是一个HTML5文档。
<html lang="en"> 指定文档语言为英语,方便搜索引擎和浏览器理解。
<head><meta charset="UTF-8">定义文档字符集为UTF-8,确保支持中文和其他字符集。<meta name="viewport" content="width=device-width, initial-scale=1.0">设置视口的宽度与设备屏幕宽度一致,使网页在移动设备上自适应显示。<title>番茄时钟</title>定义页面的标题栏显示文本。<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">引入了TailwindCSS框架,它是一个功能强大的CSS框架,简化了HTML中的样式编写。<script src="https://cdn.tailwindcss.com"></script>引入TailwindCSS的JavaScript支持库。
</head>
<body class="bg-gray-100 flex items-center justify-center h-screen">
bg-gray-100:设置背景颜色为浅灰色(TailwindCSS类)。
flex:使用Flexbox布局,使子元素在页面中居中对齐。
items-center:垂直居中子元素。
justify-center:水平居中子元素。
h-screen:设置页面高度为100vh(视口高度),即使页面充满屏幕。

解析2:计时器内容

<div class="bg-white p-8 roundedshadow-md w-96">bg-white:设置背景为白色。p-8:设置内边距为2rem,使内部内容距离边缘有一定的间距。rounded shadow-md:为该元素添加圆角和阴影,使其看起来更美观w-96:设置宽度为24rem(96的单位是rem,TailwindCSS默认配置中的24rem)。<h1 class="text-6xl font-bold text-gray-800">番茄钟</h1>bg-white:设置背景为白色。p-8:设置内边距为2rem,使内部内容距离边缘有一定的间距。rounded shadow-md:为该元素添加圆角和阴影,使其看起来更美观w-96:设置宽度为24rem(96的单位是rem,TailwindCSS默认配置中的24rem)。<div class="flex flex-col mt-4">flex flex-col:使用Flexbox布局,将子元素垂直排列。mt-4:设置顶部外边距为1rem,让计时器与标题之间有一定间距。<div id="timer" class="text-6xl font-bold text-gray-800"></div>text-6xl:设置字体大小为6xl(约为4rem),使计时器的数字更大。font-bold:加粗文本。text-gray-800:设置文本颜色为深灰色。</div>

解析3:按钮区域

<div class="flex mt-4">
flex mt-4:使用Flexbox布局,并设置顶部外边距为1rem,使按钮区域与计时器区域之间有间隔。<button id="start" class="bg-green-500 hover:bg-green-600 text-white font-bold py-2 px-4 rounded mr-2">开始</button><button id="pause" class="bg-yellow-500 hover:bg-yellow-600 text-white font-bold py-2 px-4 rounded mr-2">暂停</button><button id="reset" class="bg-red-500 hover:bg-red-600 text-white font-bold py-2 px-4 rounded">重置</button>每个按钮 (<button>) 的样式:bg-green-500、bg-yellow-500、bg-red-500:分别设置按钮的背景色为绿色、黄色、红色。hover:bg-green-600、hover:bg-yellow-600、hover:bg-red-600:设置当鼠标悬停时按钮背景色变为深绿色、深黄色、深红色。text-white:设置按钮文字为白色。font-bold:加粗按钮文字。py-2 px-4:设置按钮的内边距,py-2表示上下内边距为0.5rem,px-4表示左右内边距为1rem。rounded:为按钮添加圆角效果。mr-2:为每个按钮添加右边距,使它们之间有间隔。
</div>

解析4:脚本引用

<script src="script.js"></script>
script.js:外部JavaScript文件,负责处理番茄时钟的逻辑,包括开始、暂停、重置等功能。你需要实现该文件中的JavaScript代码来控制计时器和按钮的交互。

(3)使用JavaScript实现时钟功能

该代码实现了一个简单的番茄钟功能,可以启动、暂停和重置计时器。
计时器每秒更新一次,并在计时结束时弹出提示框。
通过按钮交互,用户可以控制计时器的开始、暂停和重置。

let timer;
let isRunning = false;
let timeLeft = 1500; // 25 minutes in secondsfunction updateTimer() {const minutes = Math.floor(timeLeft / 60);const seconds = timeLeft % 60;document.getElementById('timer').textContent = `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;
}function startTimer() {if (!isRunning) {isRunning = true;timer = setInterval(() => {if (timeLeft > 0) {timeLeft--;updateTimer();} else {clearInterval(timer);isRunning = false;alert('时间到!');}}, 1000);}
}function pauseTimer() {if (isRunning) {clearInterval(timer);isRunning = false;}
}function resetTimer() {clearInterval(timer);isRunning = false;timeLeft = 1500;updateTimer();
}document.getElementById('start').addEventListener('click', startTimer);
document.getElementById('pause').addEventListener('click', pauseTimer);
document.getElementById('reset').addEventListener('click', resetTimer);updateTimer();

解析1:变量声明

let timer;用于存储定时器的ID,便于在暂停或重置时清除定时器。
let isRunning = false;布尔值,标志计时器是否正在运行。如果计时器正在运行,则为 true,否则为 falselet timeLeft = 1500; // 25 minutes in seconds
表示剩余时间,单位是秒。初始值为 1500 秒,即 25 分钟。

解析2:updateTimer 函数

function updateTimer() {每次更新时间时调用。该函数将 timeLeft 转换为分钟和秒数,并将其格式化成 mm:ss 的形式。const minutes = Math.floor(timeLeft / 60);计算剩余时间的分钟部分。const seconds = timeLeft % 60;计算剩余时间的秒数。document.getElementById('timer').textContent = `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;将格式化后的时间显示在页面上,<div><span> 元素的内容更新为分钟和秒数的格式。如果秒数小于 10,则在秒数前面加上零。
}

解析3:startTimer 函数

function startTimer() {启动计时器的功能if (!isRunning) {它首先检查计时器是否已经在运行,如果没有,则:isRunning = true;将计时器状态设置为正在运行。timer = setInterval(() => {使用 setInterval 每秒执行一次回调函数。if (timeLeft > 0) {如果剩余时间 timeLeft > 0,则每秒减少 1 秒并更新显示的时间。timeLeft--;updateTimer();} else {如果剩余时间 timeLeft = 0,则停止计时器 (clearInterval(timer)),将 isRunning 设置为 false,并弹出一个提示框提示 "时间到!"clearInterval(timer);isRunning = false;alert('时间到!');}}, 1000);}
}

解析4:pauseTimer 函数——暂停计时器

function pauseTimer() {if (isRunning) {如果计时器正在运行(isRunning 为 true),则清除定时器(clearInterval(timer))并将 isRunning 设置为 false,表示计时器已经停止。clearInterval(timer);isRunning = false;}
}

解析5:resetTimer 函数——重置计时器

function resetTimer() {clearInterval(timer);无论计时器是否正在运行,都会停止定时器(clearInterval(timer)),将 isRunning 设置为 false,将 timeLeft 重置为 1500 秒(25 分钟),并更新显示的时间。isRunning = false;timeLeft = 1500;updateTimer();
}

解析6:事件监听

document.getElementById('start').addEventListener('click', startTimer);
document.getElementById('pause').addEventListener('click', pauseTimer);
document.getElementById('reset').addEventListener('click', resetTimer);
为三个按钮添加事件监听器:
点击 开始 按钮时调用 startTimer 函数启动计时器。
点击 暂停 按钮时调用 pauseTimer 函数暂停计时器。
点击 重置 按钮时调用 resetTimer 函数重置计时器。

解析7:初始调用

updateTimer();
在页面加载时,调用 updateTimer 函数,初始化显示的时间(25 分钟)。

http://www.mrgr.cn/news/81428.html

相关文章:

  • 死信队列简单使用
  • 1.监督学习(上)
  • Java:189 基于SSM框架的在线电影评价系统
  • ChatGPT生成接口测试用例(二)
  • istio配置重复的svc报错
  • centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
  • Linux大数据方向shell
  • 增强路由器
  • 【RAG实战】语言模型基础
  • 微信小程序性能优化
  • 【Linux】数据呈现
  • Redis 介绍和安装
  • 小白考研历程:跌跌撞撞,起起伏伏,五个月备战历程!!!
  • 服务端高并发分布式结构演进之路
  • 使用 acme.sh 申请域名 SSL/TLS 证书完整指南
  • 【Java基础-27】Java中的访问修饰符:分类、作用及应用场景
  • 2.利用docker进行gitlab服务器迁移
  • 面试记录24年新
  • Javaweb (二) | Cookie、Session
  • clickhouse解决suspiciously many的异常
  • Debian12 安装配置 ODBC for GaussDB
  • 攻防世界 PHP2
  • Python8-写一些小作业
  • AI科研助手开发总结:向量与数据权限的应用(一)
  • 【ROS2】坐标TF发布(静态)
  • 攻防世界 view_source