本文实例讲述了JavaScript+html5 canvas绘制时钟效果。分享给大家供大家参考,具体如下:

HTML部分:

canvas绘图

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);

//获取当前时间

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";

//绘制时刻度

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);

//绘画时分秒针

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();

}

//绘画时分秒针方法

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();

}

希望本文所述对大家JavaScript程序设计有所帮助。

html5canvas绘制时钟,JavaScript html5 canvas绘制时钟效果相关推荐

  1. html5时间画布走动,javascript+HTML5 canvas绘制时钟功能示例

    本文实例讲述了javascript+HTML5 canvas绘制时钟功能.分享给大家供大家参考,具体如下: 效果如下: 代码: www.jb51.net canvas绘制时钟 div{text-ali ...

  2. js html 卡通 学生,JavaScript+html5 canvas绘制的小人效果

    本文实例讲述了JavaScript+html5 canvas绘制的小人效果.分享给大家供大家参考,具体如下: 运行效果截图如下: index.html代码如下: canvas中的缩放 #canvas ...

  3. html小人动画效果代码,JavaScript+html5 canvas绘制的小人效果

    本文实例讲述了JavaScript+html5 canvas绘制的小人效果.分享给大家供大家参考,具体如下: 运行效果截图如下: index.html代码如下: canvas中的缩放 #canvas ...

  4. html弧形列表效果,JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例

    本文实例讲述了JavaScript+html5 canvas绘制的圆弧荡秋千效果.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: demo #canvas { margin:50 ...

  5. html5 放大镜效果,JavaScript+HTML5 canvas实现放大镜效果完整示例

    本文实例讲述了JavaScript+HTML5 canvas实现放大镜效果.分享给大家供大家参考,具体如下: 效果: www.jb51.net canvas放大镜 #copycanvas { bord ...

  6. html 圆圈透明 其他不透明,Javascript HTML5 Canvas绘制透明圆圈

    我需要有一个函数在画布上绘制几个圆圈,从mousedown at center = x,y开始,并将鼠标拖动到deltaX,deltaY,从而为每个圆圈创建半径r.圆圈无法填充(需要它们透明),因此用 ...

  7. html5虚线绘制的函数,HTML5 Canvas绘制圆点虚线实例

    html5 canvas 提供了很多图形绘制的函数,但是很可惜,canvas api只提供了画实线的函数(lineto),却并未提供画虚线的方法.这样的设计有时会带来很大的不便,<javascr ...

  8. html5 canvas绘制树叶,使用HTML5 Canvas绘制毕达哥拉斯树

    JavaScript 语言: JaveScriptBabelCoffeeScript 确定 { "use strict"; const canvas = document.quer ...

  9. html5 canvas绘制图形,html5 Canvas绘制图形入门详解

    html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏览器(FireFox.Chrome. ...

最新文章

  1. 通俗理解条件熵-数学
  2. MyEclipse8 GA 下载地址 注册码 优化指南
  3. oracle学习篇一:sqlplus常用命令
  4. python mysql library popular_python之mysql入门详解(四)
  5. 初识Mysql(part13)--我需要知道的7条Mysql语句之更新和删除数据
  6. linux 用脚本建分区,脚本创建磁盘分区
  7. dede织梦数据表字段解释
  8. python中hub_PyHubWeekly | 第一期:Github上那些值得推荐的Python小工具
  9. iframe标签里面的页面元素只读
  10. oracle分析函数-排名函数
  11. 2021-3测试通过:eclipse安装svn插件
  12. 3dsmax模型导入超图
  13. 如何引用阿里云矢量图标库
  14. 怎么用一个计算机控制两个屏幕,一台电脑控制多个led显示屏
  15. 电商战决胜在物流 聚美优品破瓶颈发展
  16. CG学习prepare
  17. 美团java后台面经
  18. h5 + js 炫酷相册
  19. git tag怎么使用_这才是真正的 Git:Git 内部原理揭秘!
  20. Ubuntu14.04上安装tftpd服务

热门文章

  1. python循环体结束标志_Python循环语句代码详解:while、for、break
  2. 基于NRF52810的FLASH读写操作
  3. 转子接地保护原理_转子接地保护原理
  4. BDD,TDD和DDD的
  5. ssm毕设项目财务报账管理系统l6tbn(java+VUE+Mybatis+Maven+Mysql+sprnig)
  6. ssh 和 fail2ban 的安全设置
  7. 全能媒体格式转换器(Permute 3)
  8. 51单片机外扩RAM,ROM操作。
  9. 数据库的常用分页方式
  10. 利用HTTP协议获取163的联系人列表(2)