【应用】SVG动态 时钟

没有做秒针,只做了分针和时针,5分钟以后来看应该可以看到效果╮(╯-╰)╭

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script>
        function updateTime(){ //更新SVG时钟来显示当前时间
            var now=new Date(); //当前时间
            var min=now.getMinutes(); //分钟
            var hour=(now.getHours()%12)+min/60; //转换成可以在时钟上表示的时间
            var minangle=min*6; //每6°表示一分钟
            var hourangle=hour*30; //每30°表示一小时

            //获取表示时钟时针和分针的SVG元素

            var minhand=document.getElementById("minutehand");
            var hourhand=document.getElementById("hourhand");

            //设置元素的SVG属性,将它们移动到钟面上
            minhand.setAttribute("transform","rotate("+minangle+",50,50)");
            hourhand.setAttribute("transform","rotate("+hourangle+",50,50)");
            //每一分钟更新下时钟显示时间
            setTimeout(updateTime,60000);
        }
    </script>
    <style>
        /*下面定义的所有CSS样式后悔作用在SVG元素上*/
        #clock{  /*通用语时钟的全局样式*/
            stroke:black; /*黑线*/
            stroke-linecap:round; /*圆角*/
            fill:#eef; /*以浅蓝灰色作为背景*/
        }
        #face{ stroke:width:3px; } /*时钟的外边框*/
        #ticks{ stroke:width:2; } /*标记每个小时的线段*/
        #hourhand{stroke:width:5px;} /*相对较粗的时针*/
        #minutehand{stroke:width:3px;}/*相对较细的分针*/
        #numbers{ /*如何绘制数字*/
            font-family: sans-serif;font-size: 7pt;font-weight: bold;
            text-anchor:middle;stroke:none;fill:black;
        }
    </style>
</head>
<body onload="updateTime()">
<!--vieBox是坐标系,width和height是屏幕大小-->
    <svg id="clock" viewBox="0 0 100 100" width="500" height="500">
        <defs><!--定义下拉阴影的滤镜-->
            <filter id="shadow" x="-50%" y="-50%" width="200%" height="200%">
                <feGaussianBlur in="SourceAlpha" stdDeviation="1" result="blur"/>
                <feOffset in="blur" dx="1" dy="1" result="shadow"/>
                <feMerge>
                    <feMergeNode in="SourceGraphic"/>
                    <feMergeNode in="shadow"/>
                </feMerge>
            </filter>
        </defs>
        <circle id="face" cx="50" cy="50" r="45"/><!--钟面-->
        <g id="ticks"> <!--12小时的刻度-->
            <line x1="50" y1="5.000" x2="50.00" y2="10.00"/>
            <line x1="72.50" y1="11.03" x2="70.00" y2="15.36"/>
            <line x1="88.97" y1="27.50" x2="84.64" y2="30.00"/>
            <line x1="95.00" y1="50.00" x2="90.00" y2="50.00"/>
            <line x1="88.97" y1="72.50" x2="84.64" y2="70.00"/>
            <line x1="72.50" y1="88.97" x2="70.00" y2="84.64"/>
            <line x1="50.00" y1="95.00" x2="50.00" y2="90.00"/>
            <line x1="27.50" y1="88.97" x2="30.00" y2="84.64"/>
            <line x1="11.03" y1="72.50" x2="15.36" y2="70.00"/>
            <line x1="5.000" y1="50.00" x2="10.00" y2="50.00"/>
            <line x1="11.03" y1="27.50" x2="15.36" y2="30.00"/>
            <line x1="27.50" y1="11.03" x2="30.00" y2="15.36"/>
        </g>
        <g id="numbers"><!--标记重要的几个刻度-->
            <text x="50" y="18">12</text>
            <text x="85" y="53">3</text>
            <text x="50" y="88">6</text>
            <text x="15" y="53">9</text>
        </g>
        <!--初始绘制成竖直额度指针,之后通过javascript代码来做旋转-->
        <g id="hands" filter="url(#shadow)"> <!--给指针添加阴影-->
            <line id="hourhand" x1="50" y1="50" x2="50" y2="24"/>
            <line id="minutehand" x1="50" y1="50" x2="50" y2="20"/>
        </g>
    </svg>
</body>
</html>

效果图如下:

posted @ 2016-04-26 19:15  RachelChen  阅读(835)  评论(0编辑  收藏  举报