使用jQuery和CSS3制作数字时钟(jQuery篇)

jerry CSS 2015年08月20日 收藏

上一篇文章中,我们使用CSS3制作了一个漂亮的数字时钟,本文将紧接上一篇文章内容,结合jQuery来让数字时钟真正跑起来,实现一个带有日期和星期的真正网页版数字时钟。

HTML

和上一篇文章:使用jQuery和CSS3制作数字时钟(CSS3篇)一样的HTML结构,只是多了个>date用来展示日期和星期的。

  1. <div id="clock" class="light">
  2. <div class="display">
  3. <div class="date"></div>
  4. <div class="digits"></div>
  5. </div>
  6. </div>

jQuery

CSS代码请参照上一篇文章,本文不再啰嗦,直接看jQuery代码。

首先我们定义参数,定义用来调用数字的class名称数组,定义中文星期名称,定义时分秒的位置。

  1. $(function(){
  2. var clock = $('#clock');
  3. //定义数字数组0-9
  4. var digit_to_name = ['zero','one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
  5. //定义星期
  6. var weekday = ['周日','周一','周二','周三','周四','周五','周六'];
  7. var digits = {};
  8. //定义时分秒位置
  9. var positions = [
  10. 'h1', 'h2', ':', 'm1', 'm2', ':', 's1', 's2'
  11. ];
  12. });

然后构建数字时钟的时分秒。在上一篇文章中我们是直接在html中放置了数字时钟的html结构,而现在我们使用jQuery来处理时钟的展示,通过append()方法来构建数字时钟。

  1. var digit_holder = clock.find('.digits');
  2. $.each(positions, function(){
  3. if(this == ':'){
  4. digit_holder.append('<div class="dots">');
  5. }
  6. else{
  7. var pos = $('<div>');
  8. for(var i=1; i<8; i++){
  9. pos.append('<span class="d' + i + '">');
  10. }
  11. digits[this] = pos;
  12. digit_holder.append(pos);
  13. }
  14. });

最后,我们要让时钟跑起来。每秒钟调用一次update_time()函数,在update_time()中,我们先用moment.js来格式化时间,关于moment.js的介绍请参照本站文章:使用moment.js轻松管理日期和时间。然后根据当前时分秒,分别设置时分秒数字的class属性,即显示当前时分秒数字。接着继续使用moment.js来格式化日期和星期,最终完成了会走动的数字时钟,请看下面代码:

  1. $(function(){
  2. ...
  3. (function update_time(){
  4. //调用moment.js来格式化时间
  5. var now = moment().format("HHmmss");
  6. digits.h1.attr('class', digit_to_name[now[0]]);
  7. digits.h2.attr('class', digit_to_name[now[1]]);
  8. digits.m1.attr('class', digit_to_name[now[2]]);
  9. digits.m2.attr('class', digit_to_name[now[3]]);
  10. digits.s1.attr('class', digit_to_name[now[4]]);
  11. digits.s2.attr('class', digit_to_name[now[5]]);
  12. var date = moment().format("YYYY年MM月DD日");
  13. var week = weekday[moment().format('d')];
  14. $(".date").html(date + ' ' + week);
  15. // 每秒钟运行一次
  16. setTimeout(update_time, 1000);
  17. })();
  18. });

下载地址