摘要:用畫動態(tài)時鐘代碼代碼保存當前畫布樣式切換中心點畫外圓畫數(shù)字畫時刻畫時針,分針,秒針將分,秒換算成小時返回上一個畫布樣式將秒換算成分畫圓心將所有事件封裝在一個函數(shù)中,為制作成動態(tài)時鐘做準備清空整個畫布初始化
用canvas畫動態(tài)時鐘
HTML代碼
: :
css:
*{margin: 0;padding: 0;} div{ text-align: center; } div.box{ margin: 50px auto; text-align: center; font-size: 30px; display: flex; align-content: center; justify-content: center; } span{ display: inline-block; width: 50px; height: 50px; line-height: 50px; border:2px solid #ccc; font-size: 20px; margin: 0px 20px; }
js代碼
var hourspan =document.getElementById("hour"); var minutespan =document.getElementById("minute"); var secondspan =document.getElementById("second"); var dom = document.getElementById("clock"); var ctx = dom.getContext("2d"); var width = ctx.canvas.width; var height = ctx.canvas.height; var r = width/2; function drawBackground(){ ctx.save(); //保存當前畫布樣式 ctx.translate(r,r);//切換中心點 //畫外圓 ctx.beginPath(); ctx.lineWidth=10; ctx.arc(0,0,r-5,0,2*Math.PI,false); ctx.stroke(); //畫數(shù)字 var hourNumber = [3,4,5,6,7,8,9,10,11,12,1,2]; ctx.textAlign = "center"; ctx.textBaseline = "middle"; hourNumber.forEach(function(item,index){ var rad = 2*Math.PI/12*index; var x = Math.cos(rad)*(r-30); var y = Math.sin(rad)*(r-30); ctx.fillText(item,x,y); }) //畫時刻 for(var i=0;i<60;i++){ var rad = 2*Math.PI/60*i; var x = Math.cos(rad)*(r-15); var y = Math.sin(rad)*(r-15); ctx.beginPath(); ctx.arc(x,y,2,0,Math.PI*2,false); if(i%5 == 0){ ctx.fillStyle = "#000"; ctx.fill(); }else{ ctx.fillStyle = "#ccc"; ctx.fill(); } } } //畫時針,分針,秒針 function drawHour(hour,minute,second){ ctx.save(); ctx.beginPath(); var rad = 2*Math.PI/12*hour+((2*Math.PI/12)*(minute+second/60)/60);//將分,秒換算成小時 ctx.rotate(rad); ctx.strokeStyle = "#000"; ctx.lineWidth = 4; ctx.lineCap = "round"; ctx.moveTo(0,10); ctx.lineTo(0,-r/2); ctx.stroke(); ctx.restore();//返回上一個畫布樣式 } function drawMinute(minute,second){ ctx.save(); ctx.beginPath(); var rad = 2*Math.PI/60*minute+(2*Math.PI/60)*(second/60);//將秒換算成分 ctx.rotate(rad); ctx.strokeStyle = "#000"; ctx.lineWidth = 6; ctx.lineCap = "round"; ctx.moveTo(0,15); ctx.lineTo(0,-(r-25)); ctx.stroke(); ctx.restore(); } function drawSecond(second){ ctx.save(); ctx.beginPath(); ctx.strokeStyle = "red"; var rad = 2*Math.PI/60*second; ctx.rotate(rad); ctx.lineWidth = 3; ctx.lineCap = "round"; ctx.moveTo(0,20); ctx.lineTo(0,-(r-15)); ctx.stroke(); ctx.restore(); } //畫圓心 function drawCicle(){ ctx.save(); ctx.beginPath(); ctx.fillStyle ="#fff"; ctx.arc(0,0,2,0,Math.PI*2,false); ctx.fill(); ctx.restore(); } //將所有事件封裝在一個函數(shù)中,為制作成動態(tài)時鐘做準備 function timeActive(){ ctx.clearRect(0,0,width,height);//清空整個畫布 var date = new Date(); var hour = date.getHours(); var minute = date.getMinutes(); var second = date.getSeconds(); hourspan.innerText = hour; minutespan.innerText = minute; secondspan.innerText = second; drawBackground(); drawHour(hour,minute,second); drawMinute(minute,second); drawSecond(second); drawCicle(); ctx.restore(); } timeActive();//初始化畫布 setInterval("timeActive()",1000);
小生初出茅廬,希望各位海涵,看見網(wǎng)上的教學視頻后,感覺挺有意思的,手敲了一遍。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/50900.html
摘要:用畫動態(tài)時鐘代碼代碼保存當前畫布樣式切換中心點畫外圓畫數(shù)字畫時刻畫時針,分針,秒針將分,秒換算成小時返回上一個畫布樣式將秒換算成分畫圓心將所有事件封裝在一個函數(shù)中,為制作成動態(tài)時鐘做準備清空整個畫布初始化 用canvas畫動態(tài)時鐘 showImg(https://segmentfault.com/img/bVPBM0?w=528&h=423); HTML代碼 : ...
摘要:用畫動態(tài)時鐘代碼代碼保存當前畫布樣式切換中心點畫外圓畫數(shù)字畫時刻畫時針,分針,秒針將分,秒換算成小時返回上一個畫布樣式將秒換算成分畫圓心將所有事件封裝在一個函數(shù)中,為制作成動態(tài)時鐘做準備清空整個畫布初始化 用canvas畫動態(tài)時鐘 showImg(https://segmentfault.com/img/bVPBM0?w=528&h=423); HTML代碼 : ...
摘要:最近做的兩個項目都是關(guān)于的,做完整理一下,方便下一次使用,在里寫的小,功能畫扇形動態(tài)畫圓弧結(jié)合做的動畫畫表盤創(chuàng)建一個對象方法開始畫筆設(shè)置填充顏色是順時針是逆時針默認是逆時針結(jié)束畫筆開始填充沒有直接創(chuàng)建一個對象方法開始畫筆設(shè)置填充顏色是順時針 最近做的兩個項目都是關(guān)于canvas的,做完整理一下,方便下一次使用,在vue里寫的小demo,功能:畫扇形 動態(tài)畫圓弧(requestAnima...
摘要:最近做的兩個項目都是關(guān)于的,做完整理一下,方便下一次使用,在里寫的小,功能畫扇形動態(tài)畫圓弧結(jié)合做的動畫畫表盤創(chuàng)建一個對象方法開始畫筆設(shè)置填充顏色是順時針是逆時針默認是逆時針結(jié)束畫筆開始填充沒有直接創(chuàng)建一個對象方法開始畫筆設(shè)置填充顏色是順時針 最近做的兩個項目都是關(guān)于canvas的,做完整理一下,方便下一次使用,在vue里寫的小demo,功能:畫扇形 動態(tài)畫圓弧(requestAnima...
我們先看看粒子時鐘的效果,如下:showImg(https://segmentfault.com/img/remote/1460000016290266);下面我們將通過canvas和js實現(xiàn),首先要創(chuàng)建一個html文件并添加一個canvas畫布,如下: Document .container{ margin: 0, aut...
閱讀 3421·2021-10-20 13:49
閱讀 2793·2021-09-29 09:34
閱讀 3691·2021-09-01 11:29
閱讀 3081·2019-08-30 11:01
閱讀 838·2019-08-29 17:10
閱讀 867·2019-08-29 12:48
閱讀 2777·2019-08-29 12:40
閱讀 1348·2019-08-29 12:30