SVG實(shí)現(xiàn)時(shí)鐘效果
本文實(shí)例為大家分享了SVG實(shí)現(xiàn)時(shí)鐘效果的具體代碼,供大家參考,具體內(nèi)容如下
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title></title> <style> * { margin: 0; } </style> </head> <body> <svg width="400" height="400"> <title>SVG Analog Clock</title> <circle id="face" cx="125" cy="125" r="100" style="fill: #f1f1f1; stroke: #000;"></circle> <g id="ticks" transform="translate(125, 125)"> <path id="triangle" d="M95 0 L 100 -5 L 100 5 Z" transform="rotate(360)"></path> </g> <g id="hands"> <path id="hour" d="M 125 125 V 75" style="fill: none; stroke: black; stroke-width: 6" transform="rotate(0)"></path> <path id="minute" d="M 125 125 V 50" style="fill: none; stroke: black; stroke-width: 4" transform="rotate(0)"></path> <path id="second" d="M 125 125 Q 100 100 125 80 T 125 40 V 30" style="fill: none; stroke: #f00; stroke-width: 2" transform="rotate(0)"></path> </g> <g id="knob" transform="translate(125, 125)"> <circle cx="0" cy="0" r="6" style="fill: #333;"></circle> </g> </svg> <script> var svgns = "http://www.w3.org/2000/svg"; var face = document.getElementById("face"), ticks = document.getElementById("ticks"), triangle = document.getElementById("triangle"), txt = document.getElementById("txt"); for (var i = 0; i < 11; i++) { var temp_triangle = triangle.cloneNode(true); var angle = i * 30 + 30; temp_triangle.setAttribute("transform", "rotate(" + angle + ")"); ticks.appendChild(temp_triangle); ticks.setAttribute("transform", "translate(125, 125), rotate(-90)"); } var hourHand = document.getElementById("hour"), minuteHand = document.getElementById("minute"), secondHand = document.getElementById("second"); var hourTransform, minuteTransform, secondTransform; var secPer12Hours = 60 * 60 * 12, secPerHour = 60 * 60, secPerMinute = 60; (function init() { hourTransform = hourHand.transform.baseVal.getItem(0); minuteTransform = minuteHand.transform.baseVal.getItem(0); secondTransform = secondHand.transform.baseVal.getItem(0); updateClock(); })() function updateClock() { var date = new Date(); var sec = date.getMilliseconds() / 1000 + date.getSeconds() + date.getMinutes() * 60 + date.getHours() * 60 * 60; var hourAngle = (sec % secPer12Hours) * 360 / secPer12Hours, minuteAngle = (sec % secPerHour) * 360 / secPerHour, secondAngle = (sec % secPerMinute) * 360 / secPerMinute; hourTransform.setRotate(hourAngle, 125, 125); minuteTransform.setRotate(minuteAngle, 125, 125); secondTransform.setRotate(secondAngle, 125, 125); window.requestAnimationFrame(updateClock); } </script> </body> </html>
瀏覽器需要支持:requestAnimationFrame
有關(guān)requestAnimationFrame的相關(guān)知識(shí)請(qǐng)自行查閱
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript中return返回多個(gè)值的三個(gè)方法實(shí)現(xiàn)
本文主要介紹了JavaScript中return返回多個(gè)值的三個(gè)方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08JavaScript箭頭函數(shù)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了JavaScript箭頭函數(shù)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06三種在ES6中將非數(shù)組轉(zhuǎn)換為數(shù)組的方法詳情
這篇文章主要介紹了三種在ES6中將非數(shù)組轉(zhuǎn)換為數(shù)組的方法詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08javascript 用函數(shù)實(shí)現(xiàn)繼承詳解
下面小編就為大家?guī)硪黄猨avascript 用函數(shù)實(shí)現(xiàn)繼承詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05javascript實(shí)現(xiàn)文本框標(biāo)簽驗(yàn)證的實(shí)例代碼
這篇文章主要介紹了javascript實(shí)現(xiàn)文本框標(biāo)簽驗(yàn)證的實(shí)例代碼,需要的朋友可以參考下2018-10-10網(wǎng)頁右鍵ie不支持event.preventDefault和event.returnValue (需要加window)
網(wǎng)頁右鍵ie不支持event.preventDefault和event.returnValue (需要加window) ,需要的朋友可以參考一下2013-02-02prototype與jquery下Ajax實(shí)現(xiàn)的差別
Ajax技術(shù)在web中應(yīng)用的相當(dāng)廣泛,最近項(xiàng)目需要用到Ajax,由于主站所用的是Jquey,而某個(gè)欄目的開發(fā)用的是prototype,這樣一來就必須對(duì)JS代碼做調(diào)整了。2009-09-09JavaScript實(shí)現(xiàn)數(shù)組在指定位置插入若干元素的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)數(shù)組在指定位置插入若干元素的方法,涉及javascript中splice方法的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04JS實(shí)現(xiàn)淘寶支付寶網(wǎng)站的控制臺(tái)菜單效果
這篇文章主要介紹了JS實(shí)現(xiàn)淘寶支付寶網(wǎng)站的控制臺(tái)菜單效果,涉及JavaScript基于時(shí)間函數(shù)及數(shù)學(xué)運(yùn)算控制頁面動(dòng)畫彈出菜單效果的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09