基于JS和JQuery实现的两种时钟效果(6)

数码管时钟-根据当前时间变化秒钟

在上一篇博文中实现了数码管时钟的布局,接下来我们就让数码管时钟动起来吧!在该篇博文中录的gif图像有点差强人意,望见谅。

项目文件:

实现根据当前时间变化秒钟的效果:

实现该效果的js代码:

 1 <script type="text/javascript" src="js/jquery-3.4.1.slim.min.js" ></script>
 2          <script type="text/javascript" src="js/JqueryRotate.js" ></script>
 3     <script type="text/javascript">
 4
 5 //        文档准备好再进行设置
 6 //$(document).ready(function(){
 7 //
 8 //
 9 //})
10 //        文档准备好再进行设置的操作
11            $(function(){
12
13
14            })
15
16            function change(){
17
18                     //获得当前时间
19                var now=new Date();
20                var second=now.getSeconds();
21                var sec0=second%10;//求得个位数
22                var  sec1=Math.floor(second/10);//向下取整
23
24                //秒数的个位
25
26                $(".timenum").eq(5).css({
27
28                    "background-image": ‘url("img/countdown‘+sec0+‘.png")‘
29
30                });
31
32                //秒数的十位
33
34                     $(".timenum").eq(4).css({
35
36                    "background-image": ‘url("img/countdown‘+sec1+‘.png")‘
37
38                });
39
40
41
42            }
43
44            setInterval("change()",1000);
45
46
47
48
49
50     </script>

其中:

注意:

数码管时钟-根据当前时间变化小时和分钟的图片

实现方式和秒根据当前时间变化一样

实现的效果图:

实现该效果的js代码:

  1 <script type="text/javascript">
  2
  3 //        文档准备好再进行设置
  4 //$(document).ready(function(){
  5 //
  6 //
  7 //})
  8 //        文档准备好再进行设置的操作
  9            $(function(){
 10
 11
 12            })
 13
 14            function change(){
 15
 16                     //获得当前时间
 17                var now=new Date();
 18                //拿到秒//秒数的个位
 19                var second=now.getSeconds();
 20                var sec0=second%10;//求得个位数
 21                var  sec1=Math.floor(second/10);//向下取整
 22
 23
 24
 25                //设置秒的图片
 26
 27                $(".timenum").eq(5).css({
 28
 29                    "background-image": ‘url("img/countdown‘+sec0+‘.png")‘
 30
 31                });
 32
 33                //秒数的十位
 34
 35                     $(".timenum").eq(4).css({
 36
 37                    "background-image": ‘url("img/countdown‘+sec1+‘.png")‘
 38
 39                });
 40
 41
 42                //拿到分
 43                var minute=now.getMinutes();
 44                var min0=minute%10;
 45                var min1=Math.floor(minute/10);
 46
 47                //设置分钟的图片
 48
 49                $(".timenum").eq(3).css({
 50
 51                    "background-image": ‘url("img/countdown‘+min0+‘.png")‘
 52
 53                });
 54
 55                //分钟的十位
 56
 57                     $(".timenum").eq(2).css({
 58
 59                    "background-image": ‘url("img/countdown‘+min1+‘.png")‘
 60
 61                });
 62
 63
 64
 65
 66                //拿到小时
 67                var hour=now.getHours();
 68                var hou0=hour%10;
 69                var hou1=Math.floor(hour/10);
 70
 71                //设置小时的图片
 72
 73                $(".timenum").eq(1).css({
 74
 75                    "background-image": ‘url("img/countdown‘+hou0+‘.png")‘
 76
 77                });
 78
 79                //小时的十位
 80
 81                     $(".timenum").eq(0).css({
 82
 83                    "background-image": ‘url("img/countdown‘+hou1+‘.png")‘
 84
 85                });
 86
 87
 88
 89
 90
 91
 92            }
 93
 94            setInterval("change()",1000);
 95
 96
 97
 98
 99
100     </script>

由于改变时分秒的很多地方都相似的,因此进行函数的抽象,效果一样:

 1 <script type="text/javascript">
 2
 3 //        文档准备好再进行设置
 4 //$(document).ready(function(){
 5 //
 6 //
 7 //})
 8 //        文档准备好再进行设置的操作
 9            $(function(){
10
11
12            })
13
14
15            //一次修改两张图片
16
17
18            function change2img(timeval,className,idx0,idx1){
19
20                var val0=timeval%10;//求得个位数
21                var  val1=Math.floor(timeval/10);//向下取整
22
23
24
25                //设置个位的图片
26
27                $(className).eq(idx0).css({
28
29                    "background-image": ‘url("img/countdown‘+val0+‘.png")‘
30
31                });
32
33                //设置十位的图片
34
35                     $(className).eq(idx1).css({
36
37                    "background-image": ‘url("img/countdown‘+val1+‘.png")‘
38
39                });
40
41
42
43
44            }
45            //每秒种时间的变化
46
47            function change(){
48
49                     //获得当前时间
50                var now=new Date();
51                change2img(now.getSeconds(),".timenum",5,4);
52                change2img(now.getMinutes(),".timenum",3,2);
53                change2img(now.getHours(),".timenum",1,0);
54                  }
55
56            setInterval("change()",1000);
57
58
59
60
61
62     </script>

此时的代码非常简洁。

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="UTF-8">
  5         <title></title>
  6         <style>
  7             .ledback{
  8                 background: url(img/LED.png) 0px 0px no-repeat;
  9                 width: 740px;
 10                 height: 300px;
 11                 margin: auto;
 12                 background-size: 100% 100%;
 13
 14             }
 15             .top1{
 16
 17                 width: 100%;
 18                 height: 15%;
 19                 /*background-color: red;*/
 20                 /*opacity: 0.6;*/
 21             }
 22             /*时间样式*/
 23
 24             .timediv{
 25
 26                 width: 100%;
 27                 height: 38%;
 28                 /*background-color: green;
 29                 opacity: 0.6;*/
 30                 text-align: center;
 31             }
 32             /*后代选择器timediv后代元素第一层div*/
 33             .timediv>div{
 34
 35                 display: inline-block;
 36                 transform: skewX(-10deg);/*斜切*/
 37
 38
 39
 40             }
 41
 42             /*冒号的样式*/
 43
 44             .timediv>div:nth-of-type(3),.timediv>div:nth-of-type(6){
 45
 46
 47                 width: 20px;
 48                 height: 100px;
 49                 background: url(img/dot.png) -52px -13px no-repeat;
 50             }
 51             /*时间的数字*/
 52             .timenum{
 53                 width: 50px;
 54                 height: 100px;
 55                 background:url(img/countdown8.png) -38px -13px no-repeat ;
 56
 57
 58
 59             }
 60
 61             /*日期样式*/
 62             .datediv{
 63
 64                 width: 100%;
 65                 height: 36%;
 66                 /*background-color: blue;*/
 67                 /*opacity: 0.6;*/
 68                 text-align: center;
 69
 70             }
 71
 72             .datediv>div{
 73
 74                 display: inline-block;
 75                 transform: skewX(-10deg);/*斜切*/
 76                 font-size: 50px;
 77                 vertical-align: middle;
 78                 color: white;
 79
 80
 81             }
 82             .datenum{
 83                 width: 39px;
 84               height: 73px;
 85               background:  url(img/countdown8.png) -15px -1px no-repeat;
 86                 background-size: 178% 123%;
 87             }
 88         </style>
 89
 90
 91         <script type="text/javascript" src="js/jquery-3.4.1.slim.min.js" ></script>
 92          <script type="text/javascript" src="js/JqueryRotate.js" ></script>
 93     <script type="text/javascript">
 94
 95
 96 //        文档准备好再进行设置的操作
 97            $(function(){
 98
 99
100            })
101
102
103            //一次修改两张图片
104
105
106            function change2img(timeval,className,idx0,idx1){
107
108                var val0=timeval%10;//求得个位数
109                var  val1=Math.floor(timeval/10);//向下取整
110
111
112
113                //设置个位的图片
114
115                $(className).eq(idx0).css({
116
117                    "background-image": ‘url("img/countdown‘+val0+‘.png")‘
118
119                });
120
121                //设置十位的图片
122
123                     $(className).eq(idx1).css({
124
125                    "background-image": ‘url("img/countdown‘+val1+‘.png")‘
126
127                });
128
129
130
131
132            }
133            //每秒种时间的变化
134
135            function change(){
136
137                     //获得当前时间
138                var now=new Date();
139                change2img(now.getSeconds(),".timenum",5,4);
140                change2img(now.getMinutes(),".timenum",3,2);
141                change2img(now.getHours(),".timenum",1,0);
142
143
144
145
146
147            }
148
149            setInterval("change()",1000);
150
151
152
153
154
155     </script>
156     </head>
157     <body>
158
159         <div class="ledback">
160             <!--占位布局-->
161             <div class="top1"></div>
162
163             <!--时分秒布局-->
164                 <div class="timediv">
165                     <!--显示小时-->
166                     <div class="timenum"></div>
167                     <div class="timenum"></div>
168                     <!--显示冒号-->
169                     <div ></div>
170                     <!--显示分钟-->
171                     <div class="timenum"></div>
172                     <div class="timenum"></div>
173                     <!--显示冒号-->
174                     <div ></div>
175                     <!--显示秒-->
176                     <div class="timenum"></div>
177                     <div class="timenum"></div>
178                 </div>
179
180                 <!--日期布局-->
181                 <div class="datediv">
182                     <!--xxxx年xx月xx日 星期x布局-->
183                     <div class="datenum"></div>
184                     <div class="datenum"></div>
185                     <div class="datenum"></div>
186                     <div class="datenum"></div>
187                     <div >年</div>
188                     <div class="datenum"></div>
189                     <div class="datenum"></div>
190                     <div >月</div>
191                     <div class="datenum"></div>
192                     <div class="datenum"></div>
193                     <div>日</div>
194                     <div class="">星期</div>
195                     <div class="datenum"></div>
196
197
198
199
200
201                 </div>
202
203
204         </div>
205     </body>
206 </html>

实现时分秒根据当前的时间变化

数码管时钟-根据当前时间变化年月日图片

js获取当前月份是从0开始计算的,因此需要进行+1:

完成月与日的效果:

在上述换一种方式实现时分秒变化的基础上,加入该两句即可实现月与日:

    change2img(now.getMonth()+1,".datenum",5,4);
               change2img(now.getDate(),".datenum",7,6);

实现年与星期:

星期:

    //星期

               var weekday=now.getDay();
               if(weekday==0){

                   weekday=7;
               }
               $(‘.datenum‘).eq(8).css({

                   "background-image": ‘url("img/countdown‘+weekday+‘.png")‘
               })

年:

    //年

               var year=now.getFullYear();
               var year0=year%10;
               var year1=Math.floor((year/10)%10);
               var year2=Math.floor((year/100)%10);
               var year3=Math.floor(year/1000);

               $(‘.datenum‘).eq(3).css({

                   "background-image": ‘url("img/countdown‘+year0+‘.png")‘
               })
               $(‘.datenum‘).eq(2).css({

                   "background-image": ‘url("img/countdown‘+ year1+‘.png")‘
               })
               $(‘.datenum‘).eq(1).css({

                   "background-image": ‘url("img/countdown‘+year2+‘.png")‘
               })
               $(‘.datenum‘).eq(0).css({

                   "background-image": ‘url("img/countdown‘+year3+‘.png")‘
               })

实现的最终效果:

实现数码时钟的所有代码:

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="UTF-8">
  5         <title></title>
  6         <style>
  7             .ledback{
  8                 background: url(img/LED.png) 0px 0px no-repeat;
  9                 width: 740px;
 10                 height: 300px;
 11                 margin: auto;
 12                 background-size: 100% 100%;
 13
 14             }
 15             .top1{
 16
 17                 width: 100%;
 18                 height: 15%;
 19                 /*background-color: red;*/
 20                 /*opacity: 0.6;*/
 21             }
 22             /*时间样式*/
 23
 24             .timediv{
 25
 26                 width: 100%;
 27                 height: 38%;
 28                 /*background-color: green;
 29                 opacity: 0.6;*/
 30                 text-align: center;
 31             }
 32             /*后代选择器timediv后代元素第一层div*/
 33             .timediv>div{
 34
 35                 display: inline-block;
 36                 transform: skewX(-10deg);/*斜切*/
 37
 38
 39
 40             }
 41
 42             /*冒号的样式*/
 43
 44             .timediv>div:nth-of-type(3),.timediv>div:nth-of-type(6){
 45
 46
 47                 width: 20px;
 48                 height: 100px;
 49                 background: url(img/dot.png) -52px -13px no-repeat;
 50             }
 51             /*时间的数字*/
 52             .timenum{
 53                 width: 50px;
 54                 height: 100px;
 55                 background:url(img/countdown8.png) -38px -13px no-repeat ;
 56
 57
 58
 59             }
 60
 61             /*日期样式*/
 62             .datediv{
 63
 64                 width: 100%;
 65                 height: 36%;
 66                 /*background-color: blue;*/
 67                 /*opacity: 0.6;*/
 68                 text-align: center;
 69
 70             }
 71
 72             .datediv>div{
 73
 74                 display: inline-block;
 75                 transform: skewX(-10deg);/*斜切*/
 76                 font-size: 50px;
 77                 vertical-align: middle;
 78                 color: white;
 79
 80
 81             }
 82             .datenum{
 83                 width: 39px;
 84               height: 73px;
 85               background:  url(img/countdown8.png) -15px -1px no-repeat;
 86                 background-size: 178% 123%;
 87             }
 88         </style>
 89
 90
 91         <script type="text/javascript" src="js/jquery-3.4.1.slim.min.js" ></script>
 92          <script type="text/javascript" src="js/JqueryRotate.js" ></script>
 93     <script type="text/javascript">
 94
 95 //        文档准备好再进行设置
 96 //$(document).ready(function(){
 97 //
 98 //
 99 //})
100 //        文档准备好再进行设置的操作
101            $(function(){
102
103
104            })
105
106
107            //一次修改两张图片
108
109
110            function change2img(timeval,className,idx0,idx1){
111
112                var val0=timeval%10;//求得个位数
113                var  val1=Math.floor(timeval/10);//向下取整
114
115
116
117                //设置个位的图片
118
119                $(className).eq(idx0).css({
120
121                    "background-image": ‘url("img/countdown‘+val0+‘.png")‘
122
123                });
124
125                //设置十位的图片
126
127                     $(className).eq(idx1).css({
128
129                    "background-image": ‘url("img/countdown‘+val1+‘.png")‘
130
131                });
132
133
134
135
136            }
137            //每秒种时间的变化
138
139            function change(){
140
141                     //获得当前时间
142                var now=new Date();
143                change2img(now.getSeconds(),".timenum",5,4);
144                change2img(now.getMinutes(),".timenum",3,2);
145                change2img(now.getHours(),".timenum",1,0);
146                change2img(now.getMonth()+1,".datenum",5,4);
147                change2img(now.getDate(),".datenum",7,6);
148
149
150                //星期
151
152                var weekday=now.getDay();
153                if(weekday==0){
154
155                    weekday=7;
156                }
157                $(‘.datenum‘).eq(8).css({
158
159                    "background-image": ‘url("img/countdown‘+weekday+‘.png")‘
160                })
161
162
163                //年
164
165                var year=now.getFullYear();
166                var year0=year%10;
167                var year1=Math.floor((year/10)%10);
168                var year2=Math.floor((year/100)%10);
169                var year3=Math.floor(year/1000);
170
171                $(‘.datenum‘).eq(3).css({
172
173                    "background-image": ‘url("img/countdown‘+year0+‘.png")‘
174                })
175                $(‘.datenum‘).eq(2).css({
176
177                    "background-image": ‘url("img/countdown‘+ year1+‘.png")‘
178                })
179                $(‘.datenum‘).eq(1).css({
180
181                    "background-image": ‘url("img/countdown‘+year2+‘.png")‘
182                })
183                $(‘.datenum‘).eq(0).css({
184
185                    "background-image": ‘url("img/countdown‘+year3+‘.png")‘
186                })
187
188
189
190
191
192
193
194 //             //拿到秒//秒数的个位
195 //             var second=now.getSeconds();
196 //             var sec0=second%10;//求得个位数
197 //             var  sec1=Math.floor(second/10);//向下取整
198 //
199 //
200 //
201 //             //设置秒的图片
202 //
203 //             $(".timenum").eq(5).css({
204 //
205 //                 "background-image": ‘url("img/countdown‘+sec0+‘.png")‘
206 //
207 //             });
208 //
209 //             //秒数的十位
210 //
211 //                  $(".timenum").eq(4).css({
212 //
213 //                 "background-image": ‘url("img/countdown‘+sec1+‘.png")‘
214 //
215 //             });
216
217
218 //             //拿到分
219 //             var minute=now.getMinutes();
220 //             var min0=minute%10;
221 //             var min1=Math.floor(minute/10);
222 //
223 //             //设置分钟的图片
224 //
225 //             $(".timenum").eq(3).css({
226 //
227 //                 "background-image": ‘url("img/countdown‘+min0+‘.png")‘
228 //
229 //             });
230 //
231 //             //分钟的十位
232 //
233 //                  $(".timenum").eq(2).css({
234 //
235 //                 "background-image": ‘url("img/countdown‘+min1+‘.png")‘
236 //
237 //             });
238 //
239 //
240 //
241 //
242 //             //拿到小时
243 //             var hour=now.getHours();
244 //             var hou0=hour%10;
245 //             var hou1=Math.floor(hour/10);
246 //
247 //             //设置小时的图片
248 //
249 //             $(".timenum").eq(1).css({
250 //
251 //                 "background-image": ‘url("img/countdown‘+hou0+‘.png")‘
252 //
253 //             });
254 //
255 //             //小时的十位
256 //
257 //                  $(".timenum").eq(0).css({
258 //
259 //                 "background-image": ‘url("img/countdown‘+hou1+‘.png")‘
260 //
261 //             });
262 //
263 //
264 //
265
266
267
268            }
269
270            setInterval("change()",1000);
271
272
273
274
275
276     </script>
277     </head>
278     <body>
279
280         <div class="ledback">
281             <!--占位布局-->
282             <div class="top1"></div>
283
284             <!--时分秒布局-->
285                 <div class="timediv">
286                     <!--显示小时-->
287                     <div class="timenum"></div>
288                     <div class="timenum"></div>
289                     <!--显示冒号-->
290                     <div ></div>
291                     <!--显示分钟-->
292                     <div class="timenum"></div>
293                     <div class="timenum"></div>
294                     <!--显示冒号-->
295                     <div ></div>
296                     <!--显示秒-->
297                     <div class="timenum"></div>
298                     <div class="timenum"></div>
299                 </div>
300
301                 <!--日期布局-->
302                 <div class="datediv">
303                     <!--xxxx年xx月xx日 星期x布局-->
304                     <div class="datenum"></div>
305                     <div class="datenum"></div>
306                     <div class="datenum"></div>
307                     <div class="datenum"></div>
308                     <div >年</div>
309                     <div class="datenum"></div>
310                     <div class="datenum"></div>
311                     <div >月</div>
312                     <div class="datenum"></div>
313                     <div class="datenum"></div>
314                     <div>日</div>
315                     <div class="">星期</div>
316                     <div class="datenum"></div>
317
318
319
320
321
322                 </div>
323
324
325         </div>
326     </body>
327 </html>

数码时钟的实现

原文地址:https://www.cnblogs.com/jiguiyan/p/11438903.html

时间: 2024-08-28 21:01:31

基于JS和JQuery实现的两种时钟效果(6)的相关文章

基于JS和JQuery实现的两种时钟效果(3)

在上一篇博文中实现了秒针的转动,接下来需要进行实现分针的布局和旋转角度计算和时针的布局和旋转角度计算 时钟案例-分针的布局和旋转角度计算 实现的效果图: 实现该效果的css代码与HTML代码: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style> 7 *{ 8 9 padding:

基于JS和JQuery实现的两种时钟效果(4)

在上一篇博文中使用了js实现了时钟的案例,在这篇博文中将介绍使用JqueryRotate插件简化时钟代码以及为时钟进行添加声音 使用JqueryRotate插件简化时钟 插件jqueryrotate优点 它可以实现旋转效果.jqueryrotate 支持所有主流浏览器,甚至包括 IE6,所以在兼容方面可以得到很好的保证.如果你想在低版本的 IE 中实现旋转效果,那么 jqueryrotate 是一个很好的选择. 首先看出现的问题效果: 可以看出时针分针秒针旋转的是图片的正中心 出现该错误的js代

Js类的静态方法与实例方法区分以及jQuery如何拓展两种方法

上学时C#老师讲到对象有两类方法,静态方法(Static)和实例方法(非Static),当时不理解静态是为何意,只是强记. 后来从事了前端的工作,一直在对类(即对象,Js中严格来说没有类的定义,虽众所周知,这里还是赘述一番,以免产生歧义)的操作上,严重缺乏整体概念,最近看extetnd中再次提到拓展静态方法与实例方法,故而再次百度,才幡然领悟,其实一直有用,只是不知其专业术语呀,哈哈~ 静态方法,属于类的方法,即类可以直接调用的方法.为类所有实例化对象所共用(但不能用实例对象之间调用),所以静态

js判断复合数据类型的两种方式(typeof不奏效了)

js判断复合数据类型的两种方式(typeof不奏效了) 博客分类: Web前端-JS语言核心 JavaScript 作者:zccst typeof认为所有的复合数据类型都是"object",没法进一步细分,所以还得用其他方法 先上结论: 1,(arr && typeof(arr) === "object" && arr.constructor === Array) 2,Object.prototype.toString.call(ar

基于Apache+Tomcat负载均衡的两种实现方法

Apache+Tomcat实现负载均衡的两种实现方法 如果我们将工作在不同平台的apache能够实现彼此间的高效通信,因此它需要一种底层机制来实现--叫做apr Apr的主要目的就是为了其能够让apache工作在不同的平台上,但在linux上安装apache的时候通常都是默认安装的 [[email protected] ~]#rpm -qi aprName                 :apr                                        Relocation

JS取地址栏参数的两种方法

第一种方法: function GetQueryString(name){ var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if(r!=null)return unescape(r[2]); return null;} 第二种方法: function getParamValue(

js获取url参数值的两种方式

js获取url参数值的方法有很多,下面也为大家介绍两种,喜欢的朋友可以测试下,希望对大家有所帮助 方法一:正则分析法 代码如下: function getQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if

jQuery中插件开发两种方式

最近挺多人写jQuery的,都是关于jQuery扩展方面的,使用方面的讲的比较多,但是关于详细的一个基础的过程讲的比较少一点,做web开发的基本上都会用到jQuery,本人就根据jQuery的使用经验讲讲插件开发.jQuery插件开发两种方式:一种是类扩展的方式开发插件,jQuery添加新的全局函数(jQuery的全局函数是属于jQuery命名空间的函数),如果将jQuery看成一个类,那么就相当于给jQuery类本身添加方法.第二种是对象扩展的方式开发插件,即jQuery对象添加方法. 类扩展

基于邻接矩阵和邻接表的两种方法实现无向图的BFS和DFS

广度优先搜索(Breadth-First-Search)和深度优先搜索(Deep-First-Search)是搜索策略中最经常用到的两种方法,特别常用于图的搜索. BFS的思想: 从一个图的某一个顶点V0出发,首先访问和V0相邻的且未被访问过的顶点V1.V2.--Vn,然后依次访问与V1.V2--Vn相邻且未被访问的顶点.如此继续,找到所要找的顶点或者遍历完整个图.我们采用队列来存储访问过的节点. DFS的思想: 深度优先搜索所遵循的策略就是尽可能"深"的在图中进行搜索,对于图中某一个