基于HTML5+CSS3實(shí)現(xiàn)簡(jiǎn)單的時(shí)鐘效果

目的:
利用html5,css實(shí)現(xiàn)鐘擺效果
知識(shí)點(diǎn):
1) 利用position/left/top和calc()實(shí)現(xiàn)元素的水平和垂直居中;
2) 利用CSS3的animation/transform/transform-origin屬性定義動(dòng)畫(huà);
3) 利用transform-origin實(shí)現(xiàn)旋轉(zhuǎn)原點(diǎn)的圓心調(diào)整
廢話(huà)不多說(shuō)了,直接看代碼吧,具體代碼如下所示:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> li{ list-style:none; } #box{ width: 400px; height: 400px; position: absolute; top:calc(50% - 200px); left:calc(50% - 200px); border: 2px solid palegoldenrod; } #dial{ width: 200px; height: 200px; position: absolute; top:calc(50% - 100px); left:calc(50% - 100px); border: 2px solid cyan; border-radius: 50%; } .scaleIndex{ width: 4px; height: 12px; position: absolute; top: 0; left: calc(50% - 2px); background-color: gray; transform-origin: 2px 100px; } .angle30{transform : rotate(30deg);} .angle60{transform : rotate(60deg);} .angle90{transform : rotate(90deg);} .angle120{transform : rotate(120deg);} .angle150{transform : rotate(150deg);} .angle180{transform : rotate(180deg);} .angle210{transform : rotate(210deg);} .angle240{transform : rotate(240deg);} .angle270{transform : rotate(270deg);} .angle300{transform : rotate(300deg);} .angle330{transform : rotate(330deg);} #fixPoint{ width: 10px; height: 10px; position: absolute; top:calc(50% - 5px); left:calc(50% - 5px); background-color: cadetblue; border-radius: 50%; } #hourHand{ width: 6px; height: 70px; position:absolute; top: 40px; left: calc(50% - 3px); background-color: darkblue; transform-origin: 50% 60px; } #minuteHand{ width: 4px; height: 75px; position:absolute; top: 35px; left: calc(50% - 2px); background-color: yellow; transform-origin: 50% 65px; } #secondHand{ width: 2px; height: 90px; position:absolute; top: 20px; left: calc(50% - 1px); background-color: red; transform-origin: 50% 80px; } </style> </head> <body> <div id = "box"> <div id = 'dial'> <ul id = "scale"> <li class = "scaleIndex"></li> <li class = "scaleIndex angle30"></li> <li class = "scaleIndex angle60"></li> <li class = "scaleIndex angle90"></li> <li class = "scaleIndex angle120"></li> <li class = "scaleIndex angle150"></li> <li class = "scaleIndex angle180"></li> <li class = "scaleIndex angle210"></li> <li class = "scaleIndex angle240"></li> <li class = "scaleIndex angle270"></li> <li class = "scaleIndex angle300"></li> <li class = "scaleIndex angle330"></li> </ul> <div id = "fixPoint"></div> <div id = "hourHand"></div> <div id = "minuteHand"></div> <div id = "secondHand"></div> </div> </div> <script type = 'text/javascript' src = 'js/jquery-3.2.1.js'></script> <script type = "text/javascript"> window.onload = function(){ var hourHand = document.getElementById('hourHand'); var minuteHand = document.getElementById('minuteHand'); var secondHand = document.getElementById('secondHand'); setInterval(function(){ var currentTime = new Date(); var hourValue = currentTime.getHours(); var hourAngle = hourValue / 24 * 360 + 'deg'; var minuteValue = currentTime.getMinutes(); var minuteAngle = minuteValue / 60 * 360 + 'deg'; var secondValue = currentTime.getSeconds(); var secondAngle = secondValue / 60 * 360 + 'deg'; console.log(hourAngle); // 方法一:利用jquery的css()增加屬性 var cmdHour = 'rotate('+ hourAngle +')'; $('#hourHand').css({transform:'rotate('+ hourAngle +')'}); var cmdMinute = 'rotate('+ minuteAngle +')'; $('#minuteHand').css({transform:cmdMinute}); var cmdSecond = 'rotate('+ secondAngle +')'; $('#secondHand').css({transform:cmdSecond}); // 方法二:利用DOM元素的style屬性設(shè)置 // hourHand.style.transform = 'rotate('+ hourAngle + ')'; // minuteHand.style.transform = 'rotate('+ minuteAngle + ')'; // secondHand.style.transform = 'rotate('+ secondAngle + ')'; },1000); } </script> </body> </html>
總結(jié)
以上所述是小編給大家介紹的基于HTML5+CSS3實(shí)現(xiàn)簡(jiǎn)單的時(shí)鐘效果,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
js+css3實(shí)現(xiàn)扁平化APP圖標(biāo)時(shí)鐘動(dòng)畫(huà)效果源碼
這是一款基于js+css3實(shí)現(xiàn)的扁平化APP圖標(biāo)時(shí)鐘動(dòng)畫(huà)效果源碼,是一款扁平化風(fēng)格APP時(shí)鐘動(dòng)態(tài)圖標(biāo)代碼,可事實(shí)顯示時(shí)鐘的時(shí)針、分針與秒針的運(yùn)行狀態(tài),畫(huà)面運(yùn)行效果流暢自然,2015-04-08CSS3+js實(shí)現(xiàn)簡(jiǎn)單的時(shí)鐘特效
本文給大家分享的是使用CSS3結(jié)合js實(shí)現(xiàn)簡(jiǎn)單的時(shí)鐘特效的代碼,主要是使用了css3 的transform屬性中的 rotate的旋轉(zhuǎn)效果和translate的位移效果的,這里推薦給大家,希望大家2015-03-18一款很酷的CSS3翻頁(yè)時(shí)鐘動(dòng)畫(huà)特效源碼
今天我們來(lái)分享一款風(fēng)格獨(dú)特的時(shí)鐘特效源碼,這款CSS3時(shí)鐘動(dòng)畫(huà)是一款數(shù)字時(shí)鐘,時(shí)間每過(guò)一秒,相應(yīng)的位置就會(huì)像翻日歷一樣翻過(guò)去。另外,這款CSS3數(shù)字時(shí)鐘有點(diǎn)立體的效果,2014-11-22jquery+CSS3實(shí)現(xiàn)的數(shù)字時(shí)鐘效果源碼
這是一款基于jquery+CSS3實(shí)現(xiàn)的數(shù)字時(shí)鐘效果源碼,可實(shí)現(xiàn)年月日及具體時(shí)間的顯示,還可以讀取并實(shí)時(shí)顯示本地時(shí)間。并且在秒數(shù)的顯示上有閃動(dòng)的效果2014-10-20基于jQuery/CSS3實(shí)現(xiàn)的線(xiàn)性時(shí)鐘插件源碼
這是一款jQuery時(shí)鐘插件,它非常有特點(diǎn),即不是數(shù)字時(shí)鐘,也不是圓盤(pán)時(shí)鐘,而是基于線(xiàn)性的時(shí)鐘。其制作思想是把圓形的時(shí)鐘刻度展開(kāi)成直線(xiàn),把時(shí)針?lè)轴樅兔脶樢沧兂煽梢曰瑒?dòng)2014-07-01CSS3實(shí)現(xiàn)的圓盤(pán)時(shí)鐘效果動(dòng)畫(huà)源碼
這是一款超酷的純CSS3實(shí)現(xiàn)的圓盤(pán)時(shí)鐘動(dòng)畫(huà)效果,這款時(shí)鐘動(dòng)畫(huà)在初始化的時(shí)候就有動(dòng)畫(huà)特效,包括圓盤(pán)的形成,以及時(shí)鐘指針的形成,都賦予了極為炫酷的動(dòng)畫(huà)色彩。2014-06-20jQuery+CSS3實(shí)現(xiàn)的一款超酷數(shù)字時(shí)鐘翻頁(yè)動(dòng)畫(huà)
一款數(shù)字時(shí)鐘,時(shí)間每過(guò)一秒,相應(yīng)的位置就會(huì)像翻日歷一樣翻過(guò)去2014-05-04CSS3制作360度旋轉(zhuǎn)時(shí)鐘表不用任何圖片
一款完全利用CSS3實(shí)現(xiàn)鐘表,不是用任何的圖片和第三方的工具2014-04-14