摘要:有一天看到旋轉(zhuǎn)這個屬性突發(fā)奇想的寫了一個鐘表沒做瀏覽器兼容來一起看看是怎么寫的吧先給個成品圖最終結(jié)果是個樣子的動態(tài)的首先思考了一下頁面的布局大致需要層最底層是一個表盤的背景圖然后其余層分別是時針分針秒針的圖層代碼如下變量名是隨便起的不要
html代碼如下 ↓
<div class="dial"> div> <div class="bigdiv bigdiv1" id="secondHand"> <div class="secondHand">div> div> <div class="bigdiv bigdiv2" id="minuteHand"> <div class="minuteHand">div> div> <div class="bigdiv bigdiv3" id="hourHand"> <div class="center">div> <div class="hourHand">div> div>
變量名是隨便起的,不要介意; class=center的這個div是表中心那個小黑點.
時針是12*60*60s轉(zhuǎn)一圈, 分針是60*60s轉(zhuǎn)一圈, 秒針是60s轉(zhuǎn)一圈, 所以css代碼如下 ↓
.dial{ width:600px; height:600px; margin:0 auto; position: absolute; border-radius: 50%; overflow: hidden; background-color: rgba(153,50,204,0.2); background-image: url(img/表盤.jpg); background-size: 100% 100%; } .bigdiv{ width:600px; height:600px; margin:0 auto; position: absolute; border-radius: 50%; overflow: hidden; } .bigdiv>div{ position: absolute; left:298px; border-radius: 100px; } .bigdiv1{ animation: moves 60s steps(60) infinite; } .bigdiv1 .secondHand{ width:4px; height:250px; background-color: red; top:50px; left:298px; } .bigdiv2{ animation: moves 3600s steps(3600) infinite; } .bigdiv2 .minuteHand{ width:6px; height:180px; background-color: green; top:120px; left:297px; } .bigdiv3{ animation: moves 43200s steps(216000) infinite; } .bigdiv3 .hourHand{ width:8px; height:160px; background-color: orange; top:140px; left:296px; border-radius: 100px; } .bigdiv .center{ top:290px; left:290px; width:20px; height:20px; background-color: black; z-index: 2; } @keyframes moves{ from{ transform: rotateZ(0deg); } to{ transform: rotateZ(360deg); } }
這一步做完后效果圖是這個樣子的:
然后用js計算當前時間,
var date = new Date(); var hours = date.getHours(); var minutes = date.getMinutes(); var seconds = date.getSeconds();
然后計算當前每個針的旋轉(zhuǎn)角度
var secondAngle = seconds; var minuteAngle = minutes * 60 + seconds; var hourAngle = 43200 * ((hours%12)/12) + minuteAngle;
現(xiàn)在的思路就是:每個針會按照自己定的時間轉(zhuǎn)一圈,初始角度也能知道,怎么組成一個顯示當前時間的動態(tài)鐘表呢?
剛開始的想法是讓這3層div旋轉(zhuǎn)對應(yīng)的角度,然后再開始,后來一想不行,因為它還是固定的時間旋轉(zhuǎn)一周,指針指向會有偏差,
現(xiàn)在需要的是頁面進來的第一圈旋轉(zhuǎn)固定角度,其余的按照原來固定的時間旋轉(zhuǎn)一周就行了,
css3里面有一個animation-delay屬性,它表示的意思是動畫延遲,負數(shù)就表示提前開始(比如-5s就表示動畫從第5s的時間開始),
剛好可以用到,讓這幾個指針提前開始對應(yīng)的角度.
js代碼如下↓
hourHand.style.cssText = "animation-delay: -"+ hourAngle +"s"; minuteHand.style.cssText = "animation-delay: -"+ minuteAngle +"s"; secondHand.style.cssText = "animation-delay: -"+ secondAngle +"s";
最后自己再加了個動態(tài)時間在鐘表的上面展示
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/1780.html
摘要:背景最近在學習,看到了一個小案例,通過自己的學習,動手實現(xiàn)了它,現(xiàn)在把它分享出來。效果圖實現(xiàn)過程首先我們需要在頁面中寫出一個靜態(tài)的鐘表效果。并對其進行簡單樣式設(shè)置。 背景:最近在學習CSS3,看到了一個小案例,通過自己的學習,動手實現(xiàn)了它,現(xiàn)在把它分享出來。 效果圖 showImg(https://segmentfault.com/img/bV5hBr?w=457&h=366); 實現(xiàn)...
摘要:背景最近在學習,看到了一個小案例,通過自己的學習,動手實現(xiàn)了它,現(xiàn)在把它分享出來。效果圖實現(xiàn)過程首先我們需要在頁面中寫出一個靜態(tài)的鐘表效果。并對其進行簡單樣式設(shè)置。 背景:最近在學習CSS3,看到了一個小案例,通過自己的學習,動手實現(xiàn)了它,現(xiàn)在把它分享出來。 效果圖 showImg(https://segmentfault.com/img/bV5hBr?w=457&h=366); 實現(xiàn)...
摘要:背景最近在學習,看到了一個小案例,通過自己的學習,動手實現(xiàn)了它,現(xiàn)在把它分享出來。效果圖實現(xiàn)過程首先我們需要在頁面中寫出一個靜態(tài)的鐘表效果。并對其進行簡單樣式設(shè)置。 背景:最近在學習CSS3,看到了一個小案例,通過自己的學習,動手實現(xiàn)了它,現(xiàn)在把它分享出來。 效果圖 showImg(https://segmentfault.com/img/bV5hBr?w=457&h=366); 實現(xiàn)...
摘要:緊接著昨天的實例,第二個是原生實現(xiàn)鐘表特效。然后根據(jù)鐘表中,角度和時間的算法關(guān)系。需要注意的是,我的算法和之前的算法不一樣,這個可以根據(jù)自己的想法實現(xiàn),實現(xiàn)的效果是不一樣的。首先知道鐘表是,然后根據(jù)一個小時,來算出各個針的角度。 緊接著昨天的實例,第二個是原生js實現(xiàn)鐘表特效。首先介紹下大致思路,首先要用css把時針分針和秒針畫出來。然后根據(jù)鐘表中,角度和時間的算法關(guān)系。 設(shè)置角度。 ...
摘要:緊接著昨天的實例,第二個是原生實現(xiàn)鐘表特效。然后根據(jù)鐘表中,角度和時間的算法關(guān)系。需要注意的是,我的算法和之前的算法不一樣,這個可以根據(jù)自己的想法實現(xiàn),實現(xiàn)的效果是不一樣的。首先知道鐘表是,然后根據(jù)一個小時,來算出各個針的角度。 緊接著昨天的實例,第二個是原生js實現(xiàn)鐘表特效。首先介紹下大致思路,首先要用css把時針分針和秒針畫出來。然后根據(jù)鐘表中,角度和時間的算法關(guān)系。 設(shè)置角度。 ...
閱讀 713·2023-04-25 19:43
閱讀 3910·2021-11-30 14:52
閱讀 3784·2021-11-30 14:52
閱讀 3852·2021-11-29 11:00
閱讀 3783·2021-11-29 11:00
閱讀 3869·2021-11-29 11:00
閱讀 3558·2021-11-29 11:00
閱讀 6105·2021-11-29 11:00