DIY时钟:给女朋友的小惊喜(下篇)

实现指针动画效果

在上一篇文章中,我们深入探讨了如何设计和创建一个独特的时钟界面样式,通过 HTML 和 CSS 实现了时钟的外观。现在,让我们进一步探讨如何使时钟变得更加生动和实用。这次,我们将重点关注如何通过 JavaScript 代码实现时钟指针的动态运动,并确保它们显示正确的时间。

在下面的代码中,我们使用了 JavaScript 来获取当前的时间,并将其转换为对应的指针旋转角度。通过这种方式,我们可以实现秒针、分针和时针的平滑移动,与现实世界中的时钟运行方式保持一致。同时,我们还会添加一些动画效果,使指针的移动更加流畅和自然。

让我们一起来看看这段 JavaScript 代码,了解它是如何使我们的时钟更加生动和引人注目的。

//获取指针 复制代码
//设置指针旋转角度

const secondHand = document.querySelector('.second-hand')
const minHand = document.querySelector('.min-hand')
const hourHand = document.querySelector('.hour-hand')

// console.log(secondHand);

function setTime() {
    const now = new Date()

    // 获取当前的秒数
    const seconds = now.getSeconds() // 30
    const secondsDegrees = seconds * 6 + 90
    secondHand.style.transform = `rotate(${secondsDegrees}deg)`

    // 获取到分数
    const mins = now.getMinutes() // 40
    const minsDegrees = mins * 6 + 90
    minHand.style.transform = `rotate(${minsDegrees}deg)`

    // 获取到时
    const hour = now.getHours() // 21
    const hourDegrees = hour * 30 + 90 + (mins / 60) * 30
    hourHand.style.transform = `rotate(${hourDegrees}deg)`
}

setTime()
setInterval(setTime, 1000)

这段代码是用来创建一个简单的时钟效果的 JavaScript 代码。让我们逐行解释它:

  1. const secondHand = document.querySelector('.second-hand'), const minHand = document.querySelector('.min-hand'), const hourHand = document.querySelector('.hour-hand'):这三行代码通过 document.querySelector 方法分别获取了 HTML 中具有 second-hand、min-hand 和 hour-hand 类的元素,这些元素代表时钟的秒针、分针和时针。这些元素将在后续代码中用于更新它们的位置。
  2. function setTime() {:定义了一个名为 setTime 的函数,该函数用于更新时钟的时间。
  3. const now = new Date():创建了一个 Date 对象 now,该对象表示当前的日期和时间。
  4. const seconds = now.getSeconds()、const mins = now.getMinutes() 和 const hour = now.getHours():分别获取了当前时间的秒数、分钟数和小时数。
  5. const secondsDegrees = seconds * 6 + 90、const minsDegrees = mins * 6 + 90 和 const hourDegrees = hour * 30 + 90 + (mins / 60) * 30:通过一些数学计算将秒数、分钟数和小时数转换为对应的旋转角度。这里的计算是基于时钟的原理,如秒针每秒钟转动 6 度,分钟数和小时数也相应地转动一定角度。
  6. secondHand.style.transform = rotate( s e c o n d s D e g r e e s d e g ) ' 、 ' m i n H a n d . s t y l e . t r a n s f o r m = ' r o t a t e ( {secondsDegrees}deg)`、`minHand.style.transform = `rotate( secondsDegreesdeg)'、'minHand.style.transform='rotate({minsDegrees}deg)和 hourHand.style.transform = rotate(${hourDegrees}deg) :通过 style.transform 属性将计算出的角度应用到相应的指针元素上,实现了时钟指针的旋转效果。
  7. setTime():在页面加载时调用 setTime 函数,以确保时钟指针的初始位置与当前时间匹配。
  8. setInterval(setTime, 1000):使用 setInterval 函数,每隔一秒钟调用一次 setTime 函数,以确保时钟的指针能够实时更新。

通过以上步骤,这段代码实现了一个简单的时钟效果,其中秒针、分针和时针会根据当前时间实时更新其位置。

最终效果

这就是DIY时钟的最终呈现啦!是不是觉得非常简单易懂呢?无论是时钟的外观设计还是功能实现,都是那么的容易上手。我相信,无论是作为一个个人项目还是作为一份特别的礼物,这样的DIY时钟都能给TA带来愉悦和惊喜。

结语

最后,希望这个DIY时钟能激发你们的创造力,成为你们生活中的一道亮丽风景线。或许你会选择将它挂在家里装饰房间,或者送给朋友作为特别的礼物。不论用途如何,它都代表着你们的心意和用心。在日复一日的生活中,它会不断提醒你们时间的流逝,让你们更加珍惜每一刻。感谢你们的观看和支持,希望你们享受这个DIY的过程,并且喜欢最终的成果!

相关推荐
Amos_Web29 分钟前
Markdonw语法
开发语言·前端·javascript
全栈项目管理程序猿33 分钟前
ArcGIS JS 基础教程(34):体元系列 - 等值面 VoxelIsosurface
前端·javascript
SensorFlow37 分钟前
离页埋点:sendBeacon 返回 true,为什么还不能算接收成功
javascript
兔子零10241 小时前
架构师最危险的能力:用正确的技术,做出错误的架构决策
前端·javascript·后端
Bug收容所1 小时前
Vue+js Day2
前端·javascript·vue.js
掘金酱2 小时前
带着作品来,坐下来聊|掘金 X-lab · Coffee Talk 邀请你来见一面
前端·javascript·后端
honkun63 小时前
vue 下拉树组件 vxe-table-select 实现分页多选
前端·javascript·vue.js
大熊程序猿3 小时前
用 ASP.NET Core + SignalR 做一个带实时对战房间的打字练习平台
javascript
OpsEye4 小时前
大量无效 Token 消耗,是很多企业被忽略的隐形成本
javascript·ai编程
鬼手点金5 小时前
单轮对话:最简单的 API 调用
java·服务器·前端·javascript·react.js·servlet·tomcat