给自己做一个时钟

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

我们可以看到,这个时钟由两个圆,三个指针和刻度组成,另外时针的指针要会动,时钟的背景是一张图片 圆和秒针,分针,时针的我们可以很容易想出来,设置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_陈寒15 分钟前
Vite5.0性能翻倍秘籍:7个极致优化技巧让你的开发体验飞起来!
前端·人工智能·后端
xw527 分钟前
uni-app项目Tabbar实现切换icon动效
前端·uni-app
凉、介35 分钟前
U-Boot 多 CPU 执行状态引导
java·服务器·前端
时光少年43 分钟前
Android 喷雾效果实现
android·前端
南囝coding1 小时前
Claude 封禁中国?为啥我觉得是个好消息
前端·后端
wordbaby1 小时前
备忘录模式(Memento Pattern)详解
前端
小鱼儿亮亮1 小时前
二、React基础精讲:编写TodoList、事件绑定、JSX语法、组件之间传值
前端·react.js
Mintopia1 小时前
实时 AIGC:Web 端低延迟生成的技术难点与突破
前端·javascript·aigc
小鱼儿亮亮1 小时前
五、Redux进阶:UI组件、容器组件、无状态组件、异步请求、Redux中间件:Redux-thunk、redux-saga,React-redux
前端·react.js
Mintopia1 小时前
Next.js 性能优化双绝:Image 与 next/font 的底层修炼手册
前端·javascript·next.js