纯 html,css,js 实现动态时钟

 

<!DOCTYPE html>
<html>
<head>
<style>
    html,body{
        width:100vw;
        height:100vh;
        overflow:hidden;
        transform-style:preserve-3d;
        font-weight:bold;
        background-color: steelblue;
        color:white;
    }
    #clock{
        margin:auto auto;
        width:300px;
        height:300px;
        transform-style:preserve-3d;
        transform:rotate(30deg,30deg);
        transform:rotateY(0deg);
    }
    ul,li{
        position:absolute;
        list-style-type:none;
        text-align:center;
        background-color:transparent;
    }
    li{
        top:20px;
        left:135px;
        width:30px;
        height:130px;
        margin:0;
        padding:0;
        transform-origin:center bottom;
    }
</style>
</head>
<body>
    <div id="clock"></div>

</body>
<script>
    window.οnlοad=function(){
        let clock=document.querySelectorAll("#clock")[0]
        for(let i=1;i<=12;i++){
            let dom=document.createElement("li")
            dom.innerHTML=i
            dom.style="transform:rotate("+ i*30 + "deg);"
            clock.appendChild(dom)
        }

        // 创建时针 分针 秒针
        let pHour=document.createElement("li")
        let pMinute=document.createElement("li")
        let pSecond=document.createElement("li")

        // 将时针 分针 秒针 加入到 clock
        clock.appendChild(pHour)
        clock.appendChild(pMinute)
        clock.appendChild(pSecond)

        // 动态改变表针状态 每秒一次
        let c=setInterval(()=>{
            d=new Date()
            let deg=(d.getHours()%12)*30 + d.getMinutes()/2
            pHour.style="background-color:blue;top:50px;left:147px;width:6px;height:100px;transform:rotate("+ deg + "deg);"
                + "border-radius:50% 50% 0% 0%;"
            pMinute.style="background-color:green;top:40px;left:149px;width:4px;height:110px;transform:rotate("+ d.getMinutes()*6 + "deg);"
                + "border-radius:50% 50% 0% 0%;"
            pSecond.style="background-color:red;top:25px;left:150px;width:1px;height:125px;transform:rotate("+ d.getSeconds()*6 + "deg);"
        },1000)
    }
</script>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值