给自己做一个时钟

心血来潮,自己做一个时钟。话不多说,进入正题。 效果图:

我们可以看到,这个时钟由两个圆,三个指针和刻度组成,另外时针的指针要会动,时钟的背景是一张图片 圆和秒针,分针,时针的我们可以很容易想出来,设置div,用css中的border-radius,把圆和木棍画出来,但刻度怎么弄呢,可以看如下图:

可以看到,刻度是由6 根木棍做出来的,在这个基础上我们把小圆盖上去就可以,我们最终的目的是要把这个样子做出来,至于里面是什么样子的,不用太过在意,毕竟谁能看到?

html代码如下:

ini 复制代码
<div class="clock">
        <div class="out-clock-face">
            <div class="marking marking-one"></div>
            <div class="marking marking-two"></div>
            <div class="marking marking-three"></div>
            <div class="marking marking-four"></div>

            <div class="inner-clock-face">
                <div class="hand hour-hand"></div>
                <div class="hand min-hand"></div>
                <div class="hand second-hand"></div>
            </div>
        </div>
    </div>

在css样式中需要做什么?主要做如下事情:在clock中用background-image: url('');放背景图;在out-clock-face中设置position: relative;相对定位,方便后面的布置;熟练运用transform: ;将各个物体移动到对应的位置;颜色,长宽等自己设置;

最后,在js中我们需要让指针动起来,首先获取指针的对象,在,用var now = new Date() // 获取当前时间,然后计算转动角度,最后setTime() // 定时器 setInterval(setTime, 1000)

代码如下:

ini 复制代码
// 获取秒针
// 设置秒针旋转的角度

var secondHand = document.querySelector('.second-hand')
var minsHand = document.querySelector('.min-hand')
var hoursHand = document.querySelector('.hour-hand')

function setTime() {
    var now = new Date() // 获取当前时间

    // 读取秒
    var seconds = now.getSeconds()
    var secondDegress = seconds * 6 + 90
    secondHand.style.transform = `rotate(${secondDegress}deg)`

    // 读取分
    var mins = now.getMinutes()
    var minsDegress = mins * 6 + 90
    minsHand.style.transform = `rotate(${minsDegress}deg)`

    // 读取时
    var hours = now.getHours()
    var hoursDegress = hours % 12 * 30 + 90 + mins / 60 *30
    hoursHand.style.transform = `rotate(${hoursDegress}deg)`
}   

setTime()
// 定时器
setInterval(setTime, 1000)
相关推荐
IT_陈寒22 分钟前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端
idcu44 分钟前
深入 Lyt.js 组件系统:L2 渲染引擎层的核心
前端·typescript
这是程序猿1 小时前
Spring Boot自动配置详解
java·大数据·前端
文心快码BaiduComate1 小时前
干货|Comate Harness Engineering工程实践指南
前端·后端·程序员
还有多久拿退休金1 小时前
一张栈的图,治好你面试答不出 script 阻塞的病
前端·javascript
光辉GuangHui1 小时前
Agent Skill 也需要测试:如何搭建 Skill 评估框架
前端·后端·llm
To_OC1 小时前
我终于搞懂 Claude Code 核心逻辑!90%的人都用错了模式
前端·ai编程
蓝宝石的傻话1 小时前
Headless浏览器的隐形陷阱:为什么你的AI自动化工具抓不到页面早期错误?
前端
irving同学462381 小时前
Node 后端实战:JWT 认证与生产级错误处理
前端·后端
莽夫搞战术2 小时前
【Google Stitch】AI原生画布重新定义设计,让想法变成可交互界面
前端·人工智能·ui