练习三.2:时钟

自制作时钟图片:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            *{
                padding: 0;
                margin: 0;
            }
            #box{
                width: 200px;
                height: 200px;
                position: relative;
                border-radius: 50%;
                border: 5px solid black;
                margin: 100px auto;
            }
            #kedu{
                width: 200px;
                height: 200px;
                position: absolute;
            }
            #kedu div{
                width: 20px;
                height: 200px;
                position: absolute;
                left: 90px;
            }
            #box span{
                display: block;
                position: absolute;
            }
            /*使用 CSS3 中的 伪元素 为时钟添加实心小圆点,指针都围着这个点转。*/
            #box:after{
              content: '';
              width: 18px;
              height: 18px;
              background: #000;
              border-radius: 50%;
              position: absolute;
              top: 50%;
              left: 50%;
              transform: translate(-50%,-50%);   /* 向左上移动自身的50% */
              z-index: 10;
            }
            #hour{
                width: 8px;
                height: 50px;
                position: absolute;
                background-color: red;
                left: 95px;
                top: 50px;
                /*这个属性可以改变旋转的中心点*/
                transform-origin: bottom center;
            }
            #minute{
                width: 6px;
                height: 70px;
                position: absolute;
                background-color: cyan;
                left: 96px;
                top: 30px;
                /*这个属性可以改变旋转的中心点*/
                transform-origin: bottom center;
            }
            #second{
                width: 4px;
                height: 90px;
                position: absolute;
                background-color: pink;
                left: 97px;
                top: 10px;
                /*这个属性可以改变旋转的中心点*/
                transform-origin: bottom center;
            }
        </style>
    </head>
    <body>
        <div id="box">
            <div id="kedu">
                <div><span>12</span></div>
                <div><span>1</span></div>
                <div><span>2</span></div>
                <div><span>3</span></div>
                <div><span>4</span></div>
                <div><span>5</span></div>
                <div><span>6</span></div>
                <div><span>7</span></div>
                <div><span>8</span></div>
                <div><span>9</span></div>
                <div><span>10</span></div>
                <div><span>11</span></div>
            </div>
            <div id="hour"></div>
            <div id="minute"></div>
            <div id="second"></div>
        </div>
        <script type="text/javascript">
            var keduDivs = document.querySelectorAll("#kedu div");
            //循环控制刻度形变的角度
            for (var i = 0; i < keduDivs.length; i++) {
                //表盘一圈360度,总共有12个刻度,每个刻度之间是360/12=30度
                keduDivs[i].style.transform = "rotate(" + i * 30 + "deg)";
                //解决刻度值显示正向问题,反向转回去就可以了
                keduDivs[i].firstChild.style.transform = "rotate(" + -i * 30 + "deg)";
            }

            //获取时分秒针DIV
            var hourDiv = document.querySelector("#hour");
            var minuteDiv = document.querySelector("#minute");
            var secondDiv = document.querySelector("#second");

            //获取时分秒
            var date = new Date();
            //把小时转换成12进制,方便运算
            var hour = date.getHours() % 12;

            var minute = date.getMinutes();

            var second = date.getSeconds();

            //设置指针
            function setPointers() {
                second++;
                if (second == 60) {
                    second = 0;
                    minute++;
                    if (minute == 60) {
                        minute = 0;
                        hour++;
                        if (hour == 13) {
                            hour = 0;
                        }
                    }
                }

                //一圈360度,一圈60秒,每秒是360/60=6度
                secondDiv.style.transform = "rotate(" + second * 6 + "deg)";
                //一圈360度,一圈60分,每分是360/60=6度
                minuteDiv.style.transform = "rotate(" + minute * 6 + "deg)";
                //一圈360度,一圈12小时,每秒是360/12=30度
                //一小时是30度,一小时是60分钟,一分钟是30/60=0.5度
                hourDiv.style.transform = "rotate(" + (hour * 30 + minute * 0.5) + "deg)";

            }
            setPointers();

            setInterval(function  () {
                setPointers();
            },1000);
        </script>
    </body>
</html>

 

posted on 2018-12-26 09:33  myworldworld  阅读(86)  评论(0)    收藏  举报

导航