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的过程,并且喜欢最终的成果!

相关推荐
做好一个小前端2 分钟前
后端接口获取到csv格式内容并导出,拒绝乱码
前端·javascript·html
勤奋菲菲1 小时前
Vue3+Three.js:requestAnimationFrame的详细介绍
开发语言·javascript·three.js·前端可视化
前端开发呀2 小时前
无所不能的uniapp拦截器【三】uni-app 拦截器核心流程解析
前端·javascript·微信小程序
云和数据.ChenGuang2 小时前
vue中构建脚手架
前端·javascript·vue.js
渣哥2 小时前
面试官最爱刁难:Spring 框架里到底用了多少经典设计模式?
javascript·后端·面试
朱昆鹏2 小时前
如何通过sessionKey 登录 Claude
前端·javascript·人工智能
wdfk_prog2 小时前
klist 迭代器初始化:klist_iter_init_node 与 klist_iter_init
java·前端·javascript
code_Bo3 小时前
基于vxe-table进行二次封装
前端·javascript·vue.js
闭着眼睛学算法3 小时前
【双机位A卷】华为OD笔试之【模拟】双机位A-新学校选址【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od
晴殇i3 小时前
为什么现代 JavaScript 代码规范开始建议禁止使用 else ?
前端·javascript·前端框架