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-handmin-handhour-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 + 90const minsDegrees = mins * 6 + 90const hourDegrees = hour * 30 + 90 + (mins / 60) * 30:通过一些数学计算将秒数、分钟数和小时数转换为对应的旋转角度。这里的计算是基于时钟的原理,如秒针每秒钟转动 6 度,分钟数和小时数也相应地转动一定角度。
  6. secondHand.style.transform = rotate( <math xmlns="http://www.w3.org/1998/Math/MathML"> 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( </math>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的过程,并且喜欢最终的成果!

相关推荐
昨天;明天。今天。4 小时前
案例-表白墙简单实现
前端·javascript·css
安冬的码畜日常4 小时前
【玩转 JS 函数式编程_006】2.2 小试牛刀:用函数式编程(FP)实现事件只触发一次
开发语言·前端·javascript·函数式编程·tdd·fp·jasmine
小御姐@stella4 小时前
Vue 之组件插槽Slot用法(组件间通信一种方式)
前端·javascript·vue.js
GISer_Jing4 小时前
【React】增量传输与渲染
前端·javascript·面试
GISer_Jing4 小时前
WebGL在低配置电脑的应用
javascript
万叶学编程7 小时前
Day02-JavaScript-Vue
前端·javascript·vue.js
天涯学馆9 小时前
Next.js与NextAuth:身份验证实践
前端·javascript·next.js
HEX9CF10 小时前
【CTF Web】Pikachu xss之href输出 Writeup(GET请求+反射型XSS+javascript:伪协议绕过)
开发语言·前端·javascript·安全·网络安全·ecmascript·xss
ConardLi10 小时前
Chrome:新的滚动捕捉事件助你实现更丝滑的动画效果!
前端·javascript·浏览器