JS实现钟表

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=640,user-scalable=no,target-densitydpi=device-dpi" />
        <style>
        *{
           margin:0;
           padding:0;
        }
        .parents{
            width:250px;
            height:250px;
            background:#000;
            -webkit-border-radius:20px;
        }
         .ab{
            position: absolute;
            width: 1px;
            height: 1px;
            border: 0px solid #999;
            background: #999;
            line-height: 3px;
            text-indent: -4px;
            font-size: 6px;
         }
         p.houre{
            height:200px;
            position:absolute;
            top:25px;
            left:125px;
            background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAABxCAYAAADlPJLFAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPhJREFUeNrsmMEKgkAQhrWDbyAIXT0FnoRA8GrHXqs3CHqNEDp5EgqiQxTdwlvPEEiw/VuzIqGhBp3+gQ90Zz7WndmTtlLKaol6wv5MjqyBQZEiRYoUKVKkSJEiRYoUKVKkSJEiRYoU/yzaDb+CIzAHY3m/gTXYte3ogg3YggTchUTWdM6rqvWOwAUFOIFA1uoEkiukthJTcAFOg2RwpCY14hQ8QPhFMoRSG+nmLPDFIZh1bGgG9ro5E3DuMYmjdrRYDhhjqcUrCHpIwcvBGWM5sN+hOb7UxvVx5B3GkdfH8dMF0HggU+84gBVYyrOSnGfqB1/ypwADAJwYYKUbK5foAAAAAElFTkSuQmCC) 0 29px no-repeat rgba(0,0,0,0);
            width:10px;
            background-size:100%;
         }
         p.minutes{
            position: absolute;
            top:25px;
            left:125px;
            background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAACLCAIAAAArqbRdAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi/P//PwMYMDHAwChrlDXKGmWNsqjNAggwAC0BBBMOvt0tAAAAAElFTkSuQmCC) 0 4px no-repeat rgba(0,0,0,0);
            height:200px;
            width:2px;
            background-size:100%;
          }
         p.second{
            position: absolute;
            top:25px;
            left:125px;
            background:rgba(0,0,0,0);
            height:200px;
            width:1px;
          }
          p.second:before{
            content: "";
            position: absolute;
            top:0;
            left:0;
            background:#642D0E;
            height:100px;
            width:1px;
          }
        </style>
    </head>
    <body>
       <div class="parents">
           <p class="houre"></p>
           <p class="minutes"></p>
           <p class="second"></p>
       </div>
       <p class="nowtime"></p>
    </body>
    <script>
        (function(){
            var a=125,b=125,r=100,sdeg=mdeg=hdeg=0,divs=timer=null;
            var second=document.querySelector(".second"),
                minute=document.querySelector(".minutes"),
                houre=document.querySelector(".houre"),
                nowtime=document.querySelector(".nowtime"),
                parents=document.querySelector(".parents"),
                nowhours=(new Date().getHours()<=12)?new Date().getHours():new Date().getHours()-12,
                nowminutes=new Date().getMinutes(),
                nowseconds=new Date().getSeconds();
                console.log(nowhours+"sss"+nowminutes+"sssss"+nowseconds);
                hdeg=nowhours*30;
                mdeg=nowminutes*6;
                sdeg=nowseconds*6;
                clearInterval(timer);
                timer=setInterval(function(){
                    if(sdeg>=360){
                        sdeg=0;
                        if(mdeg>360){
                          mdeg=0;
                          hdeg+=6;
                          if(hdeg>=360){
                             hdeg=0;
                          }
                        }
                        mdeg+=6;    
                    }
                    sdeg+=6;
                    second.style.webkitTransform='rotate('+sdeg+'deg)'; 
                    minute.style.webkitTransform='rotate('+mdeg+'deg)';
                    houre.style.webkitTransform='rotate('+hdeg+'deg)';
                    nowtime.innerText=new Date().toLocaleTimeString();
                },1000)
                for(var times=0; times<60; times++) {
                    var hudu = (2*Math.PI/ 360) * 6 * times;
                    var X = a + Math.sin(hudu) * r;
                    var Y = b - Math.cos(hudu) * r;
                    divs=document.createElement("div");
                    divs.className="ab";
                    divs.style.cssText='left:'+X+'px;top:'+Y+'px;';
                    divs.style.webkitTransform='rotate('+(6*times)+'deg)';
                    if(times%5==0){
                    divs.innerText=times/5;
                    divs.style.cssText='background:#2F5FA1;height:8px;border-color:#2F5FA1';
                    }
                    if(times==0)divs.innerText=12;
                    parents.appendChild(divs);
                }
        })()
    </script>
</html>
演示地址: http://sandbox.runjs.cn/show/xloecikn

转载于:https://www.cnblogs.com/junxi/p/5228470.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值