原生JS實(shí)現(xiàn)的簡單小鐘表功能示例
本文實(shí)例講述了原生JS實(shí)現(xiàn)的簡單小鐘表功能。分享給大家供大家參考,具體如下:
先來看看運(yùn)行效果:
完整代碼:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>www.dbjr.com.cn 鐘表</title> <style type="text/css"> body { background-color:#00A2D4; } .clock { width: 200px; height: 200px; background: -webkit-radial-gradient(#3b3b3b, #000); background: radial-gradient(#2E3F50, #0E1B29); box-shadow: inset 0px 0px 30px #131313, 0px 2px 18px rgba(0,0,0,0.5); border: 6px solid #172839; border-radius: 106px; margin: auto; position: absolute; top: 0; bottom: 0; left: 0; right: 0; } .hour-hand { width: 4px; height: 55px; background: #fff; box-shadow: 0px 0px 7px #000; position: absolute; top: 45px; left: 98px; } .minute-hand { width: 4px; height: 80px; background: #fff; box-shadow: 0px 0px 4px #000; position: absolute; top: 20px; left: 98px; } .second-hand { width: 2px; height: 80px; background: #bbb; box-shadow: 0px 0px 7px #000; position: absolute; top: 20px; left: 99px; } .pin { width: 10px; height: 10px; background: #222; border-radius: 10px; margin: auto; position: absolute; top: 0; bottom: 0; left: 0; right: 0; } .hour-hand, .minute-hand, .second-hand { -webkit-transform-origin: 50% 100%; -moz-transform-origin: 50% 100%; -o-transform-origin: 50% 100%; -ms-transform-origin: 50% 100%; transform-origin: 50% 100%; } .circle{ width:20px; height:20px; line-height:20px; text-align:center; color:#fff; position: absolute; } </style> </head> <body> <div class="clock"> <div class="minute-hand"></div> <div class="hour-hand"></div> <div class="second-hand"></div> <div class="pin"></div> <div class="circle">6</div> <div class="circle">5</div> <div class="circle">4</div> <div class="circle">3</div> <div class="circle">2</div> <div class="circle">1</div> <div class="circle">12</div> <div class="circle">11</div> <div class="circle">10</div> <div class="circle">9</div> <div class="circle">8</div> <div class="circle">7</div> </div> <div class="time"></div> <script type="text/javascript"> window.onload=function(){ setInterval(function(){ var dt = new Date(); var sec_deg = dt.getSeconds() * (360/60); var min_deg = dt.getMinutes() * (360/60); var hr_deg = dt.getHours() * (360/12) + dt.getMinutes() * (360/60/12); document.querySelector(".clock .second-hand").style.cssText='-webkit-transform:rotate(' + sec_deg + 'deg)','-moz-transform:rotate(' + sec_deg + 'deg)', '-o-transform:rotate(' + sec_deg + 'deg)', '-ms-transform:rotate(' + sec_deg + 'deg)', 'transform:rotate(' + sec_deg + 'deg)'; document.querySelector('.clock .minute-hand').style.cssText='-webkit-transform:rotate(' + min_deg + 'deg)', '-moz-transform:rotate(' + min_deg + 'deg)', '-o-transform:rotate(' + min_deg + 'deg)', '-ms-transform:rotate(' + min_deg + 'deg)', 'transform:rotate(' + min_deg + 'deg)'; document.querySelector('.clock .hour-hand').style.cssText='-webkit-transform:rotate(' + hr_deg + 'deg)', '-moz-transform:rotate(' + hr_deg + 'deg)', '-o-transform:rotate(' + hr_deg + 'deg)', '-ms-transform:rotate(' + hr_deg + 'deg)', 'transform:rotate(' + hr_deg + 'deg)'; }, 1000); var dx=90, dy=90, s=87,//半徑 x=Math.sin(0), y=Math.cos(0), dig=2*Math.PI/12; var circle=document.querySelectorAll(".circle"); for(var i=0;i<12;i++){ var x=Math.sin(i*dig); var y=Math.cos(i*dig); var topValue=Number(dy+y*s), leftValue=Number(dx+x*s); circle[i].style.top=topValue+"px"; circle[i].style.left=leftValue+"px"; } } </script> </body> </html>
感興趣的朋友可使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測試一下運(yùn)行效果。
PS:這里再為大家推薦幾款時(shí)間及日期相關(guān)工具供大家參考使用:
在線日期/天數(shù)計(jì)算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi
在線日期計(jì)算器/相差天數(shù)計(jì)算器:
http://tools.jb51.net/jisuanqi/datecalc
在線日期天數(shù)差計(jì)算器:
http://tools.jb51.net/jisuanqi/onlinedatejsq
Unix時(shí)間戳(timestamp)轉(zhuǎn)換工具:
http://tools.jb51.net/code/unixtime
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript時(shí)間與日期操作技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
bootstrap Table實(shí)現(xiàn)合并相同行
這篇文章主要為大家詳細(xì)介紹了bootstrapTable實(shí)現(xiàn)合并相同行,fastadmin框架同樣使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07javascript實(shí)現(xiàn)div的顯示和隱藏的小例子
這篇文章介紹了在JS中實(shí)現(xiàn)DIV顯示和隱藏的實(shí)例,需要的朋友可以參考一下2013-06-06用Js實(shí)現(xiàn)的動態(tài)增加表格示例自己寫的
動態(tài)增加表格的方法有很多,但大多說實(shí)現(xiàn)起來比較繁瑣,本文的這個(gè)示例是作者自己手寫的,經(jīng)測試效果還不錯(cuò),但唯獨(dú)不兼容FF,感興趣的朋友可以參考下2013-10-10通過seajs實(shí)現(xiàn)JavaScript的模塊開發(fā)及按模塊加載
seajs實(shí)現(xiàn)了JavaScript 的 模塊開發(fā)及按模塊加載。用來解決繁瑣的js命名沖突,文件依賴等問題,其主要目的是令JavaScript開發(fā)模塊化并可以輕松愉悅進(jìn)行加載。下面我們來一起深入學(xué)習(xí)下吧2019-06-06js String對象中常用方法小結(jié)(字符串操作)
js String對象中常用方法小結(jié),需要的朋友可以參考下2012-01-01JavaScript生成的動態(tài)下雨背景效果實(shí)現(xiàn)方法
這篇文章主要介紹了JavaScript生成的動態(tài)下雨背景效果實(shí)現(xiàn)方法,通過自定義函數(shù)實(shí)現(xiàn)動態(tài)背景效果,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02