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

javascript+HTML5 canvas繪制時鐘功能示例

 更新時間:2019年05月15日 09:36:53   作者:辣姐什么鬼  
這篇文章主要介紹了javascript+HTML5 canvas繪制時鐘功能,結(jié)合實例形式分析了javascript+HTML5 canvas數(shù)值運(yùn)算、圖形繪制與時間顯示相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了javascript+HTML5 canvas繪制時鐘功能。分享給大家供大家參考,具體如下:

效果如下:

代碼:

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>www.dbjr.com.cn canvas繪制時鐘</title>
 <style>
  div{text-align:center;margin-top:250px;}
 </style>
</head>
<body>
<div>
 <canvas id="clock" width="300px" height="300px"></canvas>
</div>
<script>
 var dom=document.getElementById("clock");
 var ctx=dom.getContext("2d");
 var width=ctx.canvas.width;
 var height=ctx.canvas.height;
 var r=width/2;
 var rem=width/200;
 function drawBackground(){
  ctx.save();
  ctx.translate(r,r);//重新定義圓點(diǎn)到中心
  ctx.beginPath();
  ctx.lineWidth=10*rem;
  ctx.arc(0,0,r-5*rem,0,Math.PI*2,false);//圓點(diǎn)坐標(biāo),起始角0,結(jié)束角2π,順時針
  ctx.stroke();
  var hourNum=[3,4,5,6,7,8,9,10,11,12,1,2];//數(shù)組存小時數(shù)
  ctx.font="18px Arial";
  ctx.textAlign="center";
  ctx.textBaseline="middle";
  hourNum.forEach(function (num,i) {
   var rad=2*Math.PI/12*i;//弧度
   var x=(r-30*rem)*Math.cos(rad);
   var y=(r-30*rem)*Math.sin(rad);
   ctx.fillText(num,x,y);
  });
  for(var i=0;i<60;i++){//畫圓點(diǎn)
   var rad=2*Math.PI/60*i;
   var x=(r-18*rem)*Math.cos(rad);
   var y=(r-18*rem)*Math.sin(rad);
   ctx.beginPath();
   if(i%5==0){
    ctx.fillStyle="#000";
    ctx.arc(x,y,2,0,Math.PI*2,false);
   }
   else{
    ctx.fillStyle="#ccc";
    ctx.arc(x,y,2,0,Math.PI*2,false);
   }
   ctx.fill();
  }
  ctx.closePath();
 }
 function drawHour(hour,minute){//時針
  ctx.save();
  ctx.beginPath();
  var rad=2*Math.PI/12*hour;
  var mrad=2*Math.PI/12/60*minute;
  ctx.rotate(rad+mrad);
  ctx.lineWidth=6*rem;
  ctx.moveTo(0,10*rem);
  ctx.lineTo(0,-r/2);
  ctx.lineCap="round";
  ctx.stroke();
  ctx.restore();
 }
 function drawMinute(minute,second){//分針
  ctx.save();
  ctx.beginPath();
  var rad=2*Math.PI/60*minute;
  var srad=2*Math.PI/60/60*second;
  ctx.rotate(rad+srad);
  ctx.lineWidth=3*rem;
  ctx.moveTo(0,10*rem);
  ctx.lineTo(0,-r+30*rem);
  ctx.lineCap="round";
  ctx.stroke();
  ctx.restore();
 }
 function drawSecond(second){//秒針
  ctx.save();
  ctx.beginPath();
  ctx.fillStyle="#c14543";
  var rad=2*Math.PI/60*second;
  ctx.rotate(rad);
  ctx.moveTo(-2*rem,20*rem);
  ctx.lineTo(2*rem,20*rem);
  ctx.lineTo(1*rem,-r+18*rem);
  ctx.lineTo(-1*rem,-r+18*rem);
  ctx.fill();
  ctx.restore();
 }
 function drawDot(){//畫中心圓圈
  ctx.beginPath();
  ctx.fillStyle="#fff";
  ctx.arc(0,0,3*rem,0,2*Math.PI,false);
  ctx.fill();
 }
 function draw(){
  ctx.clearRect(0,0,width,height);
  var now=new Date();
  var hour=now.getHours();
  var minute=now.getMinutes();
  var second=now.getSeconds();
  drawBackground();//背景
  drawHour(hour,minute);//小時
  drawMinute(minute,second);//分鐘
  drawSecond(second);//秒鐘
  drawDot();//中心圓點(diǎn)
  ctx.restore();
 }
 setInterval(draw,1000);
</script>
</body>
</html>

其中的rem值是為了使canvas畫布大小變化時時鐘的樣式能夠保持

感興趣的朋友可使用在線HTML/CSS/JavaScript代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測試一下運(yùn)行效果。

PS:這里再為大家推薦幾款時間及日期相關(guān)工具供大家參考使用:

在線日期/天數(shù)計算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi

在線日期計算器/相差天數(shù)計算器:
http://tools.jb51.net/jisuanqi/datecalc

在線日期天數(shù)差計算器:
http://tools.jb51.net/jisuanqi/onlinedatejsq

Unix時間戳(timestamp)轉(zhuǎn)換工具:
http://tools.jb51.net/code/unixtime

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript時間與日期操作技巧總結(jié)》、《JavaScript+HTML5特效與技巧匯總》、《JavaScript圖形繪制技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

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

相關(guān)文章

  • JavaScript實現(xiàn)忘記密碼功能的示例代碼

    JavaScript實現(xiàn)忘記密碼功能的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何使用HTML、CSS和JavaScript實現(xiàn)一個完整的忘記密碼功能,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2024-01-01
  • JS實現(xiàn)吸頂特效

    JS實現(xiàn)吸頂特效

    這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)吸頂特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • js實現(xiàn)驗證碼干擾(動態(tài))

    js實現(xiàn)驗證碼干擾(動態(tài))

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)驗證碼干擾,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • zTree獲取當(dāng)前節(jié)點(diǎn)的下一級子節(jié)點(diǎn)數(shù)實例

    zTree獲取當(dāng)前節(jié)點(diǎn)的下一級子節(jié)點(diǎn)數(shù)實例

    下面小編就為大家?guī)硪黄獄Tree獲取當(dāng)前節(jié)點(diǎn)的下一級子節(jié)點(diǎn)數(shù)實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • javascript和jQuery中的AJAX技術(shù)詳解【包含AJAX各種跨域技術(shù)】

    javascript和jQuery中的AJAX技術(shù)詳解【包含AJAX各種跨域技術(shù)】

    這篇文章主要介紹了javascript和jQuery中的AJAX技術(shù),結(jié)合實例形式分析了javascript與jQuery中ajax的實現(xiàn)方法以及AJAX各種跨域技術(shù)的原理與操作技巧,需要的朋友可以參考下
    2016-12-12
  • JS中數(shù)學(xué)計算精度問題的解決方案

    JS中數(shù)學(xué)計算精度問題的解決方案

    這篇文章主要給大家介紹了JS中數(shù)學(xué)計算精度問題的解決方案,文中通過代碼示例和圖文結(jié)合給大家講解非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • JavaScript可選鏈的實現(xiàn)示例

    JavaScript可選鏈的實現(xiàn)示例

    本文主要介紹了JavaScript可選鏈的實現(xiàn)示例,它通過使用問號(?)來判斷屬性或函數(shù)是否存在,避免了因為屬性或函數(shù)不存在而導(dǎo)致的錯誤,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • javascript 包裹節(jié)點(diǎn) 提高效率

    javascript 包裹節(jié)點(diǎn) 提高效率

    模仿jQuery,創(chuàng)建幾個包裹節(jié)點(diǎn)的方法,發(fā)現(xiàn)jQuery的方法很低效啊,下一次他又可以說這幾個方法可以提升了多少多少了。
    2010-02-02
  • JavaScript實現(xiàn)背景自動切換小案例

    JavaScript實現(xiàn)背景自動切換小案例

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)背景自動切換小案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • js仿百度登錄頁實現(xiàn)拖動窗口效果

    js仿百度登錄頁實現(xiàn)拖動窗口效果

    這篇文章主要為大家詳細(xì)介紹了js仿百度登錄頁實現(xiàn)拖動窗口效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-03-03

最新評論