zoukankan      html  css  js  c++  java
  • 使用jQuery和CSS3实现一个数字时钟

    点击进入更详细教程及源码下载     在线演示

    我们经常会在网站中看见一个时钟的效果。今天向大家分享一个使用jQuery和CSS3实现一个数字时钟教程

     
    代码:
     
    <div id="clock" class="light">
        <div class="display">
            <div class="weekdays"></div>
            <div class="ampm"></div>
            <div class="alarm"></div>
            <div class="digits"></div>
        </div>
    </div>
    <div class="zero">
        <span class="d1"></span>
        <span class="d2"></span>
        <span class="d3"></span>
        <span class="d4"></span>
        <span class="d5"></span>
        <span class="d6"></span>
        <span class="d7"></span>
    </div>
     
    CSS
     
    /* 0 */
     
    #clock .digits div.zero .d1,
    #clock .digits div.zero .d3,
    #clock .digits div.zero .d4,
    #clock .digits div.zero .d5,
    #clock .digits div.zero .d6,
    #clock .digits div.zero .d7{
        opacity:1;
    }
     
    jquery code
     
    $(function(){
     
        // Cache some selectors
     
        var clock = $('#clock'),
            alarm = clock.find('.alarm'),
            ampm = clock.find('.ampm');
     
        // Map digits to their names (this will be an array)
        var digit_to_name = 'zero one two three four five six seven eight nine'.split(' ');
     
        // This object will hold the digit elements
        var digits = {};
     
        // Positions for the hours, minutes, and seconds
        var positions = [
            'h1', 'h2', ':', 'm1', 'm2', ':', 's1', 's2'
        ];
     
        // Generate the digits with the needed markup,
        // and add them to the clock
     
        var digit_holder = clock.find('.digits');
     
        $.each(positions, function(){
     
            if(this == ':'){
                digit_holder.append('<div class="dots">');
            }
            else{
     
                var pos = $('<div>');
     
                for(var i=1; i<8; i++){
                    pos.append('<span class="d' + i + '">');
                }
     
                // Set the digits as key:value pairs in the digits object
                digits[this] = pos;
     
                // Add the digit elements to the page
                digit_holder.append(pos);
            }
     
        });
     
        // Add the weekday names
     
        var weekday_names = 'MON TUE WED THU FRI SAT SUN'.split(' '),
            weekday_holder = clock.find('.weekdays');
     
        $.each(weekday_names, function(){
            weekday_holder.append('<span>' + this + '</span>');
        });
     
        var weekdays = clock.find('.weekdays span');
     
        // Run a timer every second and update the clock
     
        (function update_time(){
     
            // Use moment.js to output the current time as a string
            // hh is for the hours in 12-hour format,
            // mm - minutes, ss-seconds (all with leading zeroes),
            // d is for day of week and A is for AM/PM
     
            var now = moment().format("hhmmssdA");
     
            digits.h1.attr('class', digit_to_name[now[0]]);
            digits.h2.attr('class', digit_to_name[now[1]]);
            digits.m1.attr('class', digit_to_name[now[2]]);
            digits.m2.attr('class', digit_to_name[now[3]]);
            digits.s1.attr('class', digit_to_name[now[4]]);
            digits.s2.attr('class', digit_to_name[now[5]]);
     
            // The library returns Sunday as the first day of the week.
            // Stupid, I know. Lets shift all the days one position down,
            // and make Sunday last
     
            var dow = now[6];
            dow--;
     
            // Sunday!
            if(dow < 0){
                // Make it last
                dow = 6;
            }
     
            // Mark the active day of the week
            weekdays.removeClass('active').eq(dow).addClass('active');
     
            // Set the am/pm text:
            ampm.text(now[7]+now[8]);
     
            // Schedule this function to be run again in 1 sec
            setTimeout(update_time, 1000);
     
        })();
     
        // Switch the theme
     
        $('a.button').click(function(){
            clock.toggleClass('light dark');
        });
     
    });
  • 相关阅读:
    字符串匹配算法 【微软面试100题 第三十三题】
    交换元素,使两数组之和的差最小 【微软面试100题 第三十二题】
    在从1到n的正数中1出现的次数 【微软面试100题 第三十题】
    栈的push、pop序列 【微软面试100题 第二十九题】
    整数的二进制表示中1的个数 【微软面试100题 第二十八题】
    跳台阶问题 【微软面试100题 第二十七题】
    左旋转字符串 【微软面试100题 第二十六题】
    字符串中找出最长的数字串 【微软面试100题 第二十五题】
    合并链表 【微软面试100题 第二十四题】
    计算圆形是否和正方形相交 【微软面试100题 第二十三题】
  • 原文地址:https://www.cnblogs.com/jshen/p/3142003.html
Copyright © 2011-2022 走看看