zoukankan      html  css  js  c++  java
  • transform实现的时钟效果

    又来一个时钟效果了,这个的实现不需要canvas,都是div、ul、li画出的,好玩有真实。

    哈哈~

    需要的js才能实现到走动这个效果,但js的内容不多,也不难。

    主要是一个css里transform的使用的思路,transform里有很多变幻属性,而普通的时钟

    在我心中就是个圆圆的东西,那么是不是可以旋转这个属性(rotate)实现了,它的刻度

    使用旋转且把旋转点设置在圆心,那不就可以绕着圆心转了吗,而时针它们的底部不是和

    圆心接触的吗,那么设置时针的底部为旋转点不就OK了,大概的说了说思路。

    代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>transform</title>
        <style id="css">
            #clock{
                width: 200px;
                height: 200px;
                border: 2px solid #000;
                border-radius: 50%;
                margin: 100px auto 0;
                position: relative;
            }
            #clock ul{
                width: 200px;
                height: 200px;
                position: relative;
                list-style: none;
                padding:0;
                margin: 0;
            }
            #clock ul li{
                width: 2px;
                height: 10px;
                background: #000;
                transform-origin: center 100px;
                position: absolute;
                top: 0;
                left: 50%;
            }
            #clock ul li:nth-of-type(5n+1){
                height: 20px;
            }    
            #hour{
                height: 40px;
                width: 4px;
                background: #00fefe;
                position: absolute;
                top: 60px;
                left: 99px;
                transform-origin:center bottom;
            }
            #min{
                height: 60px;
                width: 3px;
                background: #001afe;
                position: absolute;
                top: 40px;
                left: 99px;
                transform-origin: center bottom;
                transform: rotate(15deg);
            }
            #sec{
                height: 70px;
                width: 2px;
                background: #000;
                position: absolute;
                top: 30px;
                left: 99px;
                transform-origin:center bottom;
            }
            #dot{
                width: 10px;
                height: 10px;
                position: absolute;
                left: 95px;
                top: 95px;
                background: #aaa;
                border-radius: 50%;
            }
        </style>
    </head>
    <body>
        <div id="clock">
            <ul></ul>
            <div id="hour"></div>
            <div id="min"></div>
            <div id="sec"></div>
            <div id="dot"></div>
        </div>
        <script>
            var oCss=document.getElementById("css"); 
            var oClock=document.getElementById("clock");
            var oUl=oClock.getElementsByTagName("ul")[0];
            var oHour=document.getElementById("hour");
            var oMin=document.getElementById("min");
            var oSec=document.getElementById("sec");
            var strLi="";
            var strCss="";
            for(var i=0;i<60;i++){
                strLi+="<li></li>";
            }
            oUl.innerHTML=strLi;
            for(var i=0;i<60;i++){
                strCss+='#clock ul li:nth-of-type('+(i+1)+'){transform:rotate('+i*6+'deg);}';
            }
            oCss.innerHTML+=strCss;
            time();
            setInterval(time,1000);
            function time(){
            var date=new Date();
            var h=date.getHours();
            var m=date.getMinutes();
            var s=date.getSeconds();
    
            oHour.style.transform="rotate("+(h+m/60)*30+"deg)";
            oMin.style.transform="rotate("+(m+s/60)*6+"deg)";
            oSec.style.transform="rotate("+s*6+"deg)";
            }
        </script>
    </body>
    </html>

    使用标签画图最主要的是定位,因为这样我们就可以把弄到形状的盒子放到你所想要的位置,内部css样式表是可以使用获取元素的方式获取的,这样就可以

    使用innerHTML为其添加样式,且可以循环添加,还有因为刻度太多所以使用循环添加,这样省时省力,至于剩下的就是定时器了,给定好1秒的时间,每1

    秒执行一次函数,这样它就是动起来了。

  • 相关阅读:
    android sdk里的各目录作用
    android广播接收器
    Android 服务
    全球10个智慧城市应用案例
    大数据应用蓝皮书:未来涉及5个热点领域
    2018杭州-云栖大会
    上海世界人工智能大会大佬观点
    2018世界人工智能大会
    大数据安全
    2018第37周六
  • 原文地址:https://www.cnblogs.com/zhangzhicheng/p/5770769.html
Copyright © 2011-2022 走看看