摘要:用畫動(dòng)態(tài)時(shí)鐘代碼代碼保存當(dāng)前畫布樣式切換中心點(diǎn)畫外圓畫數(shù)字畫時(shí)刻畫時(shí)針,分針,秒針將分,秒換算成小時(shí)返回上一個(gè)畫布樣式將秒換算成分畫圓心將所有事件封裝在一個(gè)函數(shù)中,為制作成動(dòng)態(tài)時(shí)鐘做準(zhǔn)備清空整個(gè)畫布初始化
用canvas畫動(dòng)態(tài)時(shí)鐘
HTML代碼
</>復(fù)制代碼
:
:
css:
</>復(fù)制代碼
*{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代碼
</>復(fù)制代碼
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(); //保存當(dāng)前畫布樣式
ctx.translate(r,r);//切換中心點(diǎn)
//畫外圓
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);
})
//畫時(shí)刻
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();
}
}
}
//畫時(shí)針,分針,秒針
function drawHour(hour,minute,second){
ctx.save();
ctx.beginPath();
var rad = 2*Math.PI/12*hour+((2*Math.PI/12)*(minute+second/60)/60);//將分,秒換算成小時(shí)
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();//返回上一個(gè)畫布樣式
}
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();
}
//將所有事件封裝在一個(gè)函數(shù)中,為制作成動(dòng)態(tài)時(shí)鐘做準(zhǔn)備
function timeActive(){
ctx.clearRect(0,0,width,height);//清空整個(gè)畫布
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)上的教學(xué)視頻后,感覺挺有意思的,手敲了一遍。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/112163.html
摘要:用畫動(dòng)態(tài)時(shí)鐘代碼代碼保存當(dāng)前畫布樣式切換中心點(diǎn)畫外圓畫數(shù)字畫時(shí)刻畫時(shí)針,分針,秒針將分,秒換算成小時(shí)返回上一個(gè)畫布樣式將秒換算成分畫圓心將所有事件封裝在一個(gè)函數(shù)中,為制作成動(dòng)態(tài)時(shí)鐘做準(zhǔn)備清空整個(gè)畫布初始化 用canvas畫動(dòng)態(tài)時(shí)鐘 showImg(https://segmentfault.com/img/bVPBM0?w=528&h=423); HTML代碼 : ...
摘要:用畫動(dòng)態(tài)時(shí)鐘代碼代碼保存當(dāng)前畫布樣式切換中心點(diǎn)畫外圓畫數(shù)字畫時(shí)刻畫時(shí)針,分針,秒針將分,秒換算成小時(shí)返回上一個(gè)畫布樣式將秒換算成分畫圓心將所有事件封裝在一個(gè)函數(shù)中,為制作成動(dòng)態(tài)時(shí)鐘做準(zhǔn)備清空整個(gè)畫布初始化 用canvas畫動(dòng)態(tài)時(shí)鐘 showImg(https://segmentfault.com/img/bVPBM0?w=528&h=423); HTML代碼 : ...
摘要:最近做的兩個(gè)項(xiàng)目都是關(guān)于的,做完整理一下,方便下一次使用,在里寫的小,功能畫扇形動(dòng)態(tài)畫圓弧結(jié)合做的動(dòng)畫畫表盤創(chuàng)建一個(gè)對(duì)象方法開始畫筆設(shè)置填充顏色是順時(shí)針是逆時(shí)針默認(rèn)是逆時(shí)針結(jié)束畫筆開始填充沒有直接創(chuàng)建一個(gè)對(duì)象方法開始畫筆設(shè)置填充顏色是順時(shí)針 最近做的兩個(gè)項(xiàng)目都是關(guān)于canvas的,做完整理一下,方便下一次使用,在vue里寫的小demo,功能:畫扇形 動(dòng)態(tài)畫圓弧(requestAnima...
摘要:最近做的兩個(gè)項(xiàng)目都是關(guān)于的,做完整理一下,方便下一次使用,在里寫的小,功能畫扇形動(dòng)態(tài)畫圓弧結(jié)合做的動(dòng)畫畫表盤創(chuàng)建一個(gè)對(duì)象方法開始畫筆設(shè)置填充顏色是順時(shí)針是逆時(shí)針默認(rèn)是逆時(shí)針結(jié)束畫筆開始填充沒有直接創(chuàng)建一個(gè)對(duì)象方法開始畫筆設(shè)置填充顏色是順時(shí)針 最近做的兩個(gè)項(xiàng)目都是關(guān)于canvas的,做完整理一下,方便下一次使用,在vue里寫的小demo,功能:畫扇形 動(dòng)態(tài)畫圓弧(requestAnima...
我們先看看粒子時(shí)鐘的效果,如下:showImg(https://segmentfault.com/img/remote/1460000016290266);下面我們將通過(guò)canvas和js實(shí)現(xiàn),首先要?jiǎng)?chuàng)建一個(gè)html文件并添加一個(gè)canvas畫布,如下: Document .container{ margin: 0, aut...
閱讀 2560·2021-09-22 15:25
閱讀 2970·2021-09-14 18:03
閱讀 1221·2021-09-09 09:33
閱讀 1707·2021-09-07 09:59
閱讀 2936·2021-07-29 13:50
閱讀 1505·2019-08-30 15:44
閱讀 1720·2019-08-29 16:22
閱讀 1292·2019-08-29 12:49