阅读 81

分享一个html编写的圆形时钟模版

 

 

 

  1 DOCTYPE html>
  2 
  3 <html lang="en">
  4 
  5 <head>
  6 
  7 <meta charset="GBK">
  8 
  9 <title>title>
 10 
 11 <style>
 12 
 13 html{
 14 
 15 background: #000;
 16 
 17 color: #666;
 18 
 19 font-size: 12px;
 20 
 21 overflow:hidden;
 22 
 23 }
 24 
 25 *{
 26 
 27 margin: 0;
 28 
 29 padding: 0;
 30 
 31 }
 32 
 33 span{
 34 
 35 display: block;
 36 
 37 float: left;
 38 
 39 }
 40 
 41 .on{
 42 
 43 color: #fff;
 44 
 45 }
 46 
 47 .wrapper{
 48 
 49 width: 200px;
 50 
 51 height: 200px;
 52 
 53 position: absolute;
 54 
 55 left:50%;
 56 
 57 top:50%;
 58 
 59 margin-top: -100px;
 60 
 61 margin-left: -100px;
 62 
 63 }
 64 
 65 .wrapper .timebox{
 66 
 67 position: absolute;
 68 
 69 width: 200px;
 70 
 71 height: 200px;
 72 
 73 top: 0;
 74 
 75 left:0;
 76 
 77 border-radius: 100%;
 78 
 79 transition: all 0.5s;
 80 
 81 }
 82 
 83 .timebox span{
 84 
 85 transition: all 0.5s;
 86 
 87 float: left;
 88 
 89 }
 90 
 91 .wrapper .timebox span{
 92 
 93 position: absolute;
 94 
 95 left:50%;
 96 
 97 top:50%;
 98 
 99 width: 40px;
100 
101 height: 18px;
102 
103 margin-top: -9px;
104 
105 margin-left: -20px;
106 
107 text-align: right;
108 
109 }
110 
111 style>
112 
113 head>
114 
115 <body>
116 
117 <div id="wrapper">
118 
119 <div class="timebox yuebox" id="yueBox">div>
120 
121 <div class="timebox riqiBox" id="riqiBox">div>
122 
123 <div class="timebox hourbox" id="hourbox">div>
124 
125 <div class="timebox minutebox" id="minutebox">div>
126 
127 <div class="timebox secondbox" id="secondbox">div>
128 
129 div>
130 
131 
132 
133 <script>
134 
135 let wrapper = document.getElementById("wrapper");
136 
137 let yueBox = document.getElementById("yueBox");
138 
139 let riqiBox = document.getElementById("riqiBox");
140 
141 let hourbox = document.getElementById("hourbox");
142 
143 let minutebox = document.getElementById("minutebox");
144 
145 let secondbox = document.getElementById("secondbox");
146 
147 /*
148 
149 * 找所有的东西标签函数
150 
151 * */
152 
153 let findSiblings = function( tag ){
154 
155 let parent = tag.parentNode;
156 
157 let childs = parent.children;
158 
159 let sb = [];
160 
161 for(let i=0 ; i <= childs.length-1 ; i++){
162 
163 if( childs[i]!==tag){
164 
165 sb[sb.length] = childs[i];
166 
167 }
168 
169 }
170 
171 return sb ;
172 
173 };
174 
175 /*
176 
177 * 去掉所有兄弟的类
178 
179 * */
180 
181 let removeSiblingClass =function( tag ){
182 
183 let sb = findSiblings( tag );
184 
185 for(let i=0 ; i <= sb.length-1 ; i++){
186 
187 sb[i].className = "";
188 
189 }
190 
191 };
192 
193 /*
194 
195 * 初始化月份函数
196 
197 * */
198 
199 let initMonth = function(){
200 
201 for(let i=1; i<=12; i++){
202 
203 let span = document.createElement("span");
204 
205 span.innerHTML = i+"";
206 
207 yueBox.appendChild( span );
208 
209 }
210 
211 };
212 
213 // 初始化日期
214 
215 let initDate = function(){
216 
217 for(let i=1; i<=31; i++){
218 
219 let span = document.createElement("span");
220 
221 span.innerHTML = i+"";
222 
223 riqiBox.appendChild( span );
224 
225 }
226 
227 };
228 
229 // 初始化小时,分钟,秒
230 
231 let initHour = function(){
232 
233 for(let i=0; i<=23; i++){
234 
235 let h = i ;
236 
237 let span = document.createElement("span");
238 
239 if( h<10){
240 
241 h="0"+h;
242 
243 }
244 
245 span.innerHTML = h +"";
246 
247 hourbox.appendChild( span );
248 
249 }
250 
251 };
252 
253 let initMinute = function(){
254 
255 for(let i=0; i<=59; i++){
256 
257 let f = i ;
258 
259 let span = document.createElement("span");
260 
261 if( f<10){
262 
263 f="0"+f;
264 
265 }
266 
267 span.innerHTML = f +"";
268 
269 minutebox.appendChild( span );
270 
271 }
272 
273 };
274 
275 let initSecond = function(){
276 
277 for(let i=0; i<=59; i++){
278 
279 let miao = i ;
280 
281 let span = document.createElement("span");
282 
283 if( miao<10){
284 
285 miao="0"+miao;
286 
287 }
288 
289 span.innerHTML = miao +"";
290 
291 secondbox.appendChild( span );
292 
293 }
294 
295 };
296 
297 // 时间文字样式切换函数
298 
299 let changeTime = function(tag){
300 
301 tag.className = "on";
302 
303 removeSiblingClass( tag );
304 
305 };
306 
307 /*
308 
309 * 初始化日历函数
310 
311 * */
312 
313 let initRili = function(){
314 
315 initMonth(); // 初始化月份
316 
317 initDate(); // 初始化日期
318 
319 initHour(); // 小时
320 
321 initMinute();
322 
323 initSecond();
324 
325 };
326 
327 /*
328 
329 * 展示当前时间
330 
331 * 参数:mydate 时间对象
332 
333 * */
334 
335 let showNow = function( mydate ){
336 
337 let yue = mydate.getMonth() ;
338 
339 let riqi = mydate.getDate();
340 
341 let hour = mydate.getHours() ;
342 
343 let minute = mydate.getMinutes();
344 
345 let second = mydate.getSeconds();
346 
347 // 时间文字样式切换函数
348 
349 changeTime( yueBox.children[yue] );
350 
351 changeTime( riqiBox.children[riqi-1] );
352 
353 changeTime( hourbox.children[hour] );
354 
355 changeTime( minutebox.children[minute] );
356 
357 changeTime( secondbox.children[second] );
358 
359 };
360 
361 // 展示时间圆圈函数
362 
363 // tag:目标
364 
365 // num:数字数量
366 
367 // dis:圆圈半径
368 
369 let textRound = function(tag,num,dis){
370 
371 let span = tag.children ;
372 
373 for(let i=0 ; i<=span.length-1; i++){
374 
375 span[i].style.transform="rotate("+ (360/span.length)*i+"deg) translateX("+dis+"px)" ;
376 
377 }
378 
379 };
380 
381 /*
382 
383 * 旋转指定“圆圈”指定度数
384 
385 * */
386 
387 let rotateTag = function(tag , deg){
388 
389 tag.style.transform = "rotate("+deg+"deg)";
390 
391 };
392 
393 let main = function(){
394 
395 initRili(); // 初始化日历
396 
397 setInterval(function(){
398 
399 let mydate = new Date();
400 
401 showNow( mydate ); // 展示当前时间
402 
403 },1000);
404 
405 // n秒后,摆出圆形
406 
407 setTimeout(function(){
408 
409 wrapper.className = "wrapper";
410 
411 textRound(yueBox,12,40);
412 
413 textRound(riqiBox,31,80);
414 
415 textRound(hourbox,24,120);
416 
417 textRound(minutebox,60,160);
418 
419 textRound(secondbox,60,200);
420 
421 setInterval(function(){
422 
423 let mydate = new Date();
424 
425 rotateTag( yueBox , -30*mydate.getMonth());
426 
427 rotateTag( riqiBox , -360/31*(mydate.getDate()-1) );
428 
429 rotateTag( hourbox , -360/24*mydate.getHours());
430 
431 rotateTag( minutebox , -6*mydate.getMinutes());
432 
433 rotateTag( secondbox , -6*mydate.getSeconds());
434 
435 },1000)
436 
437 },100)
438 
439 };
440 
441 main();
442 
443 script>
444 <p><a href="" alt="ygxinjian" target="_blank">ygxinjiana>p>
445 body>
446
447 html>

 

原文:https://www.cnblogs.com/ygxinjian/p/14874211.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐