zoukankan      html  css  js  c++  java
  • 【应用】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:3px; } /*时钟的外边框*/
            #ticks{ stroke:2; } /*标记每个小时的线段*/
            #hourhand{stroke:5px;} /*相对较粗的时针*/
            #minutehand{stroke: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>

    效果图如下:

  • 相关阅读:
    Samba服务器搭建
    Nginx优化
    Nginx配置
    LNMP环境搭建
    mysql主从同步
    Linux系统文件权限体系详解
    强大的grep,sed和awk--用案例来讲解
    Linux中关机,重启,注销命令
    如何解决一个问题(一)
    Linux基础命令讲解(二)
  • 原文地址:https://www.cnblogs.com/RachelChen/p/5436289.html
Copyright © 2011-2022 走看看