JavaScript canvas動(dòng)畫(huà)實(shí)現(xiàn)時(shí)鐘效果
本文實(shí)例為大家分享了canvas動(dòng)畫(huà)實(shí)現(xiàn)時(shí)鐘效果的具體代碼,供大家參考,具體內(nèi)容如下

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>時(shí)鐘特效</title>
</head>
<body>
<canvas width="150" height="150" id="canvas"></canvas>
</body>
</html>
<script>
clock();// 顯示
setInterval(clock,1000);// 每一秒重繪一次,達(dá)到轉(zhuǎn)動(dòng)效果
function clock(){
var now = new Date();// 得到當(dāng)前日期與時(shí)間
var second = now.getSeconds(),
min = now.getMinutes(),
hour = now.getHours();// 得到時(shí)分秒
hour = hour > 12?hour-12:hour;
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.clearRect(0,0,150,150);// 初始化畫(huà)布
ctx.save();
ctx.translate(75,75);// 平移坐標(biāo)原點(diǎn)
ctx.scale(0.4,0.4);//縮放效果
ctx.rotate(-Math.PI/2);// 將x軸旋轉(zhuǎn)-90
ctx.strokeStyle = 'black';
ctx.fillStyle = 'black';
ctx.lineWidth = 8;
ctx.lineCap = 'round';
// 顯示時(shí)針刻度
ctx.save();
ctx.beginPath();
for(var i = 0;i<12;i++)
{
ctx.rotate(Math.PI/6);
ctx.moveTo(100,0);
ctx.lineTo(120,0);
}
ctx.stroke();
ctx.closePath();
ctx.restore();// 恢復(fù)
ctx.save();
// 顯示秒針刻度
ctx.beginPath();
ctx.lineWidth = 5;
for(var i = 0;i < 60; i++)
{
if(i % 5 != 0)
{
ctx.moveTo(117,0);
ctx.lineTo(120,0);
}
ctx.rotate(Math.PI/30);// 轉(zhuǎn)6度
}
ctx.stroke();
ctx.closePath();
ctx.restore();// 恢復(fù)
ctx.save();
// 繪制時(shí)針
ctx.beginPath();
ctx.rotate((Math.PI / 6)*hour + (Math.PI/360)*min + (Math.PI /21600)*second)//時(shí)針當(dāng)前指向的位置
ctx.lineWidth = 14;
ctx.moveTo(-20,0);
ctx.lineTo(75,0);
ctx.stroke();
ctx.closePath();
ctx.restore();//恢復(fù)
ctx.save();
// 繪制分針
ctx.beginPath();
ctx.strokeStyle = 'black';
ctx.lineWidth = 10;
ctx.rotate((Math.PI/30)*min + (Math.PI/1800)*second);// 分針當(dāng)前的位置
ctx.moveTo(-28,0);
ctx.lineTo(102,0);
ctx.stroke();
ctx.closePath();
ctx.restore();//恢復(fù)
ctx.save();
// 繪制秒針
ctx.beginPath();
ctx.rotate(Math.PI/30*second);
ctx.strokeStyle = '#D40000';
ctx.lineWidth = 6;
ctx.moveTo(-30,0);
ctx.lineTo(83,0);
ctx.stroke();
ctx.closePath();
ctx.restore();//恢復(fù)
ctx.save();
//繪制表框
ctx.beginPath();
ctx.lineWidth = 4;
ctx.strokeStyle = '#325Fa2';
ctx.arc(0,0,142,0,Math.PI*2,true);//半徑142
ctx.stroke();
ctx.closePath();
ctx.restore()//恢復(fù)
ctx.restore()//恢復(fù)
}
</script>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JavaScript canvas實(shí)現(xiàn)圍繞旋轉(zhuǎn)動(dòng)畫(huà)
- JS+canvas畫(huà)一個(gè)圓錐實(shí)例代碼
- js canvas畫(huà)布實(shí)現(xiàn)高斯模糊效果
- js+canvas實(shí)現(xiàn)畫(huà)板功能
- JS canvas實(shí)現(xiàn)畫(huà)板和簽字板功能
- JS Canvas接口和動(dòng)畫(huà)效果大全
- JS使用canvas繪制旋轉(zhuǎn)風(fēng)車動(dòng)畫(huà)
- JavaScript結(jié)合Canvas繪畫(huà)畫(huà)運(yùn)動(dòng)小球
相關(guān)文章
weixin-java-miniapp微信小程序登陸具體實(shí)現(xiàn)
這篇文章主要介紹了weixin-java-miniapp微信小程序登陸具體實(shí)現(xiàn)的相關(guān)資料,包括用戶授權(quán)、獲取code、發(fā)送到后臺(tái)、后臺(tái)驗(yàn)證并獲取openid和session_key、返回驗(yàn)證結(jié)果等步驟,需要的朋友可以參考下2025-02-02
html5+canvas實(shí)現(xiàn)支持觸屏的簽名插件教程
jq-signature.js是一個(gè)幫助你創(chuàng)建簽名的jQuery插件,允許你的用戶使用鼠標(biāo),手指或者鉛筆生成簽名。下面這篇文章主要給大家介紹了利用html5+canvas實(shí)現(xiàn)支持觸屏的簽名插件的相關(guān)資料,需要的朋友可以參考下。2017-05-05
JavaScript調(diào)用ajax獲取文本文件內(nèi)容實(shí)現(xiàn)代碼
這篇文章主要介紹了JavaScript調(diào)用ajax獲取文本文件內(nèi)容的方法,需要的朋友可以參考下2014-03-03
javascript中style.left和offsetLeft的用法說(shuō)明
本篇文章主要是對(duì)javascript中style.left和offsetLeft的用法進(jìn)行了說(shuō)明介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-03-03
基于JavaScript代碼實(shí)現(xiàn)隨機(jī)漂浮圖片廣告
在網(wǎng)上有很多這樣的代碼,不過(guò)未必符合W3C標(biāo)準(zhǔn),因?yàn)樵陬^部加上<!DOCTYPE html>類似標(biāo)簽之后,漂浮效果就會(huì)失效,下面分享一個(gè)符合標(biāo)準(zhǔn)的漂浮代碼,使需要的朋友免去大量改造代碼的繁瑣2016-01-01
原生JS實(shí)現(xiàn)實(shí)時(shí)鐘表
這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)實(shí)時(shí)鐘表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

