欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript html5 canvas繪制時(shí)鐘效果

 更新時(shí)間:2021年10月12日 11:05:46   作者:丿伊楓  
這篇文章主要介紹了JavaScript html5繪制時(shí)鐘效果的相關(guān)資料,使用HTML5的canvas標(biāo)簽和Javascript腳本,模擬顯示了一個(gè)時(shí)鐘,感興趣的小伙伴們可以參考一下

本文實(shí)例講述了JavaScript+html5 canvas繪制時(shí)鐘效果。分享給大家供大家參考,具體如下:

HTML部分:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
 <title>canvas繪圖</title>
</head>
<body onload="init()">
<canvas id="canvas" width="200px" height="200px"></canvas>
</body>
</html>

JavaScript部分:

function init(){
 var canvas = document.getElementById("canvas"),
  context = canvas.getContext("2d");

 setInterval(function(){draw(canvas, context)},1000);
}
function draw(canvas, context){
 var x = canvas.width,
  y = canvas.height,
  r = Math.min(x/2, y/2);

 context.clearRect(0, 0, x, y); //清除繪畫歷史
 //繪畫鐘框
 context.fillStyle = "#f1f1f1";
 drawCircle(context, x, y, r);
 //繪畫文字
 var tx = x/2,ty = y/2,tr = 0.8*r;
 context.font = "bold 12px 微軟雅黑";
 context.fillStyle = "#000";
 drawText(context, "1", tx + 0.5*tr,ty - 0.866*tr);
 drawText(context, "2", tx + 0.866*tr, ty - 0.5*tr);
 drawText(context, "3", tx + tr, ty);
 drawText(context, "4", tx + 0.866*tr, ty + 0.5*tr);
 drawText(context, "5", tx + 0.5*tr, ty + 0.866*tr);
 drawText(context, "6", tx, ty + tr);
 drawText(context, "7", tx - 0.5*tr, ty + 0.866*tr);
 drawText(context, "8", tx - 0.866*tr, ty + 0.5*tr);
 drawText(context, "9", tx - tr, ty);
 drawText(context, "10", tx - 0.866*tr, ty - 0.5*tr);
 drawText(context, "11", tx - 0.5*tr, ty - 0.866*tr);
 drawText(context, "12", tx, ty - tr);
 //獲取當(dāng)前時(shí)間
 var date = new Date(),
  h = date.getHours(),
  m = date.getMinutes(),
  s = date.getSeconds(),
  angleH = (360/12)*Math.PI/180,
  angleM = (360/60)*Math.PI/180
 context.strokeSyle = "#000";
  //繪制時(shí)刻度
  drawScale(context, x, y, r, angleH, -0.88*r, -0.96*r, 3);
  //繪制分刻度
  drawScale(context, x, y, r, angleM, -0.93*r, -0.96*r, 1);
 //繪畫時(shí)分秒針
 drawCircle(context, x, y, 3);
 drawNeedle(context, x, y, r, h*angleH + m*angleM/12, -0.5*r);
 drawNeedle(context, x, y, r, m*angleM + s*angleM/60, -0.6*r);
 drawNeedle(context, x, y, r, s*angleM, -0.75*r);

}
//繪畫圓
function drawCircle(context, x, y, r){
 context.save();
 context.beginPath();
 context.arc(x/2, y/2, r, 0, Math.PI*2, 0);
 context.fill();
 context.closePath();
 context.restore();
}
//繪畫文字方法
function drawText(context, text, x, y){
 context.save();
 x -= (context.measureText(text).width/2);
 y += 4;
 context.translate(x, y);
 context.fillText(text, 0, 0);
 context.restore();
}
//繪制刻度方法
function drawScale(context, x, y, r, rotate, start, end, lineWidth){
 context.save();
 context.beginPath();
 context.translate(x/2,y/2);
 context.lineWidth = lineWidth;
 for (var i = 0; i < 60; i++) { 
  context.rotate(rotate);
  context.moveTo(0, start); 
  context.lineTo(0, end);
 }
 context.closePath();
 context.stroke();
 context.restore();
}
//繪畫時(shí)分秒針方法
function drawNeedle(context, x, y, r, rotate, line){
 context.save();
 context.translate(x/2,y/2);
 context.beginPath();
 context.rotate(rotate);
 context.moveTo(0, 0.1*r);
 context.lineTo(0, line);
 context.closePath();
 context.stroke();
 context.restore();
}

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • JS如何判斷json是否為空

    JS如何判斷json是否為空

    本文重點(diǎn)給大家介紹js判斷json對(duì)象是否為空的知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-07-07
  • 兩個(gè)比較有用的Javascript工具函數(shù)代碼

    兩個(gè)比較有用的Javascript工具函數(shù)代碼

    下面我的base.js中的extend函數(shù)可以允許用json格式賦值屬性甚至是函數(shù)句柄
    2010-02-02
  • Js獲取數(shù)組最大和最小值示例代碼

    Js獲取數(shù)組最大和最小值示例代碼

    做項(xiàng)目的時(shí)候遇到一個(gè)返回查詢內(nèi)容里面,只取最大和最小值問(wèn)題,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下
    2013-10-10
  • JS 實(shí)現(xiàn) ajax 異步瀏覽器兼容問(wèn)題

    JS 實(shí)現(xiàn) ajax 異步瀏覽器兼容問(wèn)題

    本文通過(guò)實(shí)例代碼給大家講解了js實(shí)現(xiàn)ajax異步瀏覽器兼容問(wèn)題,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-01-01
  • JavaScript 模塊化開發(fā)實(shí)例詳解【seajs、requirejs庫(kù)使用】

    JavaScript 模塊化開發(fā)實(shí)例詳解【seajs、requirejs庫(kù)使用】

    這篇文章主要介紹了JavaScript 模塊化開發(fā),結(jié)合實(shí)例形式詳細(xì)分析了基于seajs、requirejs庫(kù)的JavaScript模塊化使用相關(guān)操作技巧,需要的朋友可以參考下
    2020-05-05
  • iis6+javascript Add an Extension File

    iis6+javascript Add an Extension File

    iis6+javascript Add an Extension File...
    2007-06-06
  • 深入理解Javascript閉包 新手版

    深入理解Javascript閉包 新手版

    最近在網(wǎng)上查閱了不少Javascript閉包(closure)相關(guān)的資料,寫的大多是非常的學(xué)術(shù)和專業(yè)。對(duì)于初學(xué)者來(lái)說(shuō)別說(shuō)理解閉包了,就連文字?jǐn)⑹龆己茈y看懂。撰寫此文的目的就是用最通俗的文字揭開Javascript閉包的真實(shí)面目。
    2010-12-12
  • Javascript中的Prototype到底是什么

    Javascript中的Prototype到底是什么

    Javascript也是面向?qū)ο蟮恼Z(yǔ)言,但它是一種基于原型Prototype的語(yǔ)言,而不是基于類的語(yǔ)言。接下來(lái)通過(guò)本文給大家介紹Javascript中的Prototype到底是啥的相關(guān)知識(shí),感興趣的朋友參考下
    2016-02-02
  • js中if語(yǔ)句的幾種優(yōu)化代碼寫法

    js中if語(yǔ)句的幾種優(yōu)化代碼寫法

    UglifyJS是一個(gè)對(duì)javascript進(jìn)行壓縮和美化的工具,在它的文檔說(shuō)明中,我看到了幾種關(guān)于if語(yǔ)句優(yōu)化的方法。
    2011-03-03
  • 下拉框select的綁定示例

    下拉框select的綁定示例

    根據(jù)文本綁定text、根據(jù)值綁定value,下面有個(gè)不錯(cuò)的示例,大家可以看看
    2014-09-09

最新評(píng)論