首页 > Web开发 > 详细

原生JS会跳动的电子表

时间:2017-01-05 21:29:07      阅读:249      评论:0      收藏:0      [点我收藏+]

 一个会跳动的电子表,源码--time.html  图片--img

github地址:https://github.com/1056237661/practiceCode

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .timeBox{
                margin: 100px;
                padding: 12px;
                display: inline-block;
                border: 1px solid chartreuse;
            }
            img{
                position: relative;
            }
        </style>
    </head>
    <body>
        <div class="timeBox">
            <img class="timeNum" src="img/1.png"/>
            <img class="timeNum" src="img/2.png"/>            
            <img src="img/second1.png"/>
            
            <img class="timeNum" src="img/3.png"/>
            <img class="timeNum" src="img/4.png"/>            
            <img src="img/second1.png"/>
            
            <img class="timeNum" src="img/5.png"/>
            <img class="timeNum" src="img/0.png"/>        
        </div>
    </body>
    <script>
    var aImg = document.getElementsByClassName("timeNum");  /* 获取显示时间的img节点 */
    var shockNum = [ -15, 15, -9, 9, -4, 0];                /* 振幅的数组 */
    var iNow = [];                                            /* 存储每次需要波动的节点下标 */
    
    /* 初始化电子表 */
    time();    
    /* 设置定时器更新时间(1s) */
    var timer = setInterval(function(){        
        time();
    },1000);    
    /* 获取时间方法 */    
    function time(){
        var dateNow = new Date();                /* new一个Date对象 */
        var hours = dateNow.getHours();            /**/
        var minius = dateNow.getMinutes();        /**/
        var seconds = dateNow.getSeconds();        /**/
        var str = timeStyle(hours)+timeStyle(minius)+timeStyle(seconds); /* 用字符串存储当前时间 */
        /* 通过str初始化时间表 */
        for (var i=0; i<str.length; i++) {
            /* 判断每次是哪个需要波动 */
            if (aImg[i].index != str.charAt(i)) {
                /* 首次循环index值全为undefined,禁止全部波动 */
                if (aImg[i].index != undefined) {                    
                    iNow.push(i);        /* 把需要波动的值加入iNow数组 */
                }
                aImg[i].index = str.charAt(i);  /* 并赋给新的值 */    
                aImg[i].setAttribute("src","img/"+str.charAt(i)+".png"); /* 替换数字图片 */
            }        
        }
        /* 遍历当前需要震动的数组,并设置震动定时器 */
        for(x in iNow){
            toshocking(iNow[x]);
        }
        /* 每次震动完数组清零 */
        iNow.length = 0;
    }    
    
    /* 为每一个需要震动的数字设置震动定时器 */
    function toshocking(z){
        var n = 0;   /* 波动次数 */
        var timer2 = setInterval(function(){
            aImg[z].style.top = shockNum[n]+"px";
            ++n;   
            /* 若波动完设置的振幅数组,清除定时器 */
            if (n==shockNum.length) {
                clearInterval(timer2)
            }                    
        },20);            
    }
    
    // 调整时间的样式,个位数前面加“0”
    function timeStyle(num){
        if (num < 10) {
            return "0"+num;
        }
        return num+"";
    }
    </script>
</html>

效果:

技术分享

 

原生JS会跳动的电子表

原文:http://www.cnblogs.com/zxjwlh/p/6253695.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!