css3 + js绘制动态时钟的示例代码

  介绍

这篇文章主要介绍了css3 + js绘制动态时钟的示例代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

先看看效果图:

 css3 + js绘制动态时钟的示例代码

首先,思考了一下页面的布局,大致需要4层div,最底层是一个表盘的背景图,然后其余3层分别是时针,分针,秒针的图层。

html代码如下:

& lt; div 类=癲ial"比;   & lt;/div>   & lt; div 类=癰igdiv  bigdiv1", id=皊econdHand"比;   ,,,& lt; div 类=皊econdHand"祝辞& lt;/div>   & lt;/div>   & lt; div 类=癰igdiv  bigdiv2", id=癿inuteHand"比;   ,,,& lt; div 类=癿inuteHand"祝辞& lt;/div>   & lt;/div>   & lt; div 类=癰igdiv  bigdiv3", id=癶ourHand"比;   ,,,& lt; div 类=癱enter"祝辞& lt;/div>   ,,,& lt; div 类=癶ourHand"祝辞& lt;/div>   & lt;/div>

变量名是随便起的,不要介意;类=中心的这个div是表中心那个小黑点。

时针是60 * 60 * 60年代转一圈,分针是60 * 60年代转一圈,秒针是60年代转一圈,所以css代码如下:

.dial {   ,,,宽度:600 px;   ,,,身高:600 px;   ,,,保证金:0,汽车;   ,,,位置:,绝对;   ,,,这个特性:,50%;   ,,,溢出:,隐藏;   background - color,,,:, rgba (153、50204、0.2);   ,,,背景图片:,url (img/表盘jpg);   ,,,background-size:, 100%, 100%;   }   .bigdiv {   ,,,宽度:600 px;   ,,,身高:600 px;   ,,,保证金:0,汽车;   ,,,位置:,绝对;   ,,,这个特性:,50%;   ,,,溢出:,隐藏;   }   .bigdiv> div {   ,,,位置:,绝对;   ,,,左:298 px;   ,,,这个特性:,100 px;   }   .bigdiv1 {   动画:,,,,moves  60 s 步骤(60),无限;   }   .bigdiv1  .secondHand {   ,,,宽度:4 px;   ,,,身高:250 px;   background - color,,,:,红色;   ,,,:50 px;   ,,,左:298 px;   }   .bigdiv2 {   动画:,,,,moves  3600 s 步骤(3600),无限;   }   .bigdiv2  .minuteHand {   ,,,宽度:6 px;   ,,,身高:180 px;   background - color,,,:,绿色;   ,,,:120 px;   ,,,左:297 px;   }   .bigdiv3 {   动画:,,,,moves  216000 s 步骤(216000),无限;   }   .bigdiv3  .hourHand {   ,,,宽度:8 px;   ,,,身高:160 px;   background - color,,,:,橙色;   ,,,:140 px;   ,,,左:296 px;   ,,,这个特性:,100 px;   }   .bigdiv  .center {   ,,,:290 px;   ,,,左:290 px;   ,,,宽度:20 px;   ,,,身高:20 px;   background - color,,,:,黑色;   ,,,z - index:, 2;   }   @keyframes 移动{   从,,,{,变换:rotateZ(0度);,}   ,,,,{,变换:rotateZ(360度),,}   }

这一步做完后效果图是这个样子的:

 css3 + js绘制动态时钟的示例代码

然后用js计算当前时间,

var  date =, new 日期();   var  hours =, date.getHours ();   var  minutes =, date.getMinutes ();   var  seconds =, date.getSeconds ();

然后计算当前每个针的旋转角度

var  secondAngle =,秒;   var  minuteAngle =, minutes  *, 60, +,秒;   var  hourAngle =,(60/12), *,((12小时%),*,3600,+,minuteAngle);

现在的思路就是:每个针会按照自己定的时间转一圈,初始角度也能知道,怎么组成一个显示当前时间的动态钟表呢?

刚开始的想法是让这3层div旋转对应的角度,然后再开始,后来一想不行,因为它还是固定的时间旋转一周,指针指向会有偏差,

现在需要的是页面进来的第一圈旋转固定角度,其余的按照原来固定的时间旋转一周就行了,

css3里面有一个animation-delay属性,它表示的意思是动画延迟,负数就表示提前开始(比如5 s就表示动画从第5 s的时间开始),

刚好可以用到,让这几个指针提前开始对应的角度。

js代码如下:

hourHand.style.cssText =,“animation-delay:,产生绯闻,+,hourAngle  +“s";   时间=minuteHand.style.cssText “animation-delay:,产生绯闻,+,minuteAngle  +“s";   时间=secondHand.style.cssText “animation-delay:,产生绯闻,+,secondAngle  +“s";

css3 + js绘制动态时钟的示例代码