效果图:

代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>canvas clock</title>
</head>
<body>
<canvas id="clock" width="500" height="500">您的浏览器不支持canvas标签</canvas> <script type="text/javascript">
var canvas = document.getElementById('clock');
var clock = canvas.getContext('2d');
var r = canvas.width/2.5; //半径
function drowClock(){
//清除画布 clock.clearRect(0, 0, 800, 800);
var now = new Date();
var secd = now.getSeconds();
var min = now.getMinutes();
var hour = now.getHours();
//小时必须获取浮点类型(小时+分数转化的小时)
//时间格式19:23:30
//将24小时进制装换为12小时进制
hour = hour + (min / 60);
hour = hour > 12 ? hour - 12 : hour;
//外圈
clock.beginPath();
clock.lineWidth = 10;
clock.strokeStyle = "#d9d9d9";
clock.arc(250, 250, 200, 0, 360, false);
clock.stroke();
clock.closePath();
//刻度
//时刻度
for (var i = 0; i < 12; i++) {
clock.save();
//设置时针的粗细
clock.lineWidth = 7;
//设置时针的颜色
clock.strokeStyle = "#727272";
//先设置0,0点
clock.translate(250, 250);
//再设置旋转角度
clock.rotate((i * 30) * Math.PI / 180);//角度*Math.PI/180=弧度
clock.beginPath();
clock.moveTo(0, -170);
clock.lineTo(0, -190);
clock.closePath();
clock.stroke();
clock.restore();
}
//分刻度
for (var i = 0; i < 60; i++) {
clock.save();
//设置时针的粗细
clock.lineWidth = 3;
//设置时针的颜色
clock.strokeStyle = "#727272";
//先设置0,0点
clock.translate(250, 250);
//再设置旋转角度
clock.rotate((i * 6) * Math.PI / 180);//角度*Math.PI/180=弧度
clock.beginPath();
clock.moveTo(0, -180);
clock.lineTo(0, -190);
clock.closePath();
clock.stroke();
clock.restore();
}
//时针
clock.save();
clock.lineWidth = 7;
clock.strokeStyle = "#727272";
clock.translate(250, 250);
clock.rotate(hour * 30 * Math.PI / 180);
clock.beginPath();
clock.moveTo(0, -140);
clock.lineTo(0, 30);
clock.stroke();
clock.closePath();
clock.restore();
// 文字
for(i = 0;i<12;i++){
angle = i * 30;
// 转换为弧度制,Math.sin、Math.cos都接受弧度制单位
angle = angle*Math.PI/180;;
font = (i + 3 > 12)?i+3-12 : i+3;
fontX = 245+Math.round(Math.cos(angle)*(r-45));
fontY = 256+Math.round(Math.sin(angle)*(r-45));
clock.font = 'bold 16px 微软雅黑';
clock.fillText(font+'',fontX,fontY);
}
//分针
clock.save();
clock.lineWidth = 5;
clock.strokeStyle = "#727272";
clock.translate(250, 250);
clock.rotate(min * 6 * Math.PI / 180);
clock.beginPath();
clock.moveTo(0, -160);
clock.lineTo(0, 30);
clock.stroke();
clock.closePath();
clock.restore();
//秒针
clock.save();
clock.lineWidth = 3;
clock.strokeStyle = "#727272";
clock.translate(250, 250);
clock.rotate(secd * 6 * Math.PI / 180);
clock.beginPath();
clock.moveTo(0, -170);
clock.lineTo(0, 30);
clock.closePath();
clock.stroke();
//画交叉点
clock.beginPath();
clock.arc(0, 0, 5, 0, 360, false);
clock.closePath();
clock.fillStyle = "#ebebeb";
clock.fill();
clock.stroke();
clock.beginPath();
clock.arc(0, -150, 5, 0, 360, false);
clock.closePath();
clock.fillStyle = "gray";
clock.fill();
clock.stroke();
clock.restore(); window.requestAnimationFrame(drowClock);
}
//使用setInternal(代码,(毫秒)时间) 让时钟动起来
drowClock();
// setInterval(drowClock, 1000);
</script>
</body>
</html>

html5、canvas绘制本地时钟的更多相关文章

  1. 使用html5 canvas绘制圆形或弧线

    注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...

  2. JavaScript+html5 canvas实现本地截图教程

    这篇文章主要介绍了JavaScript+html5 canvas实现本地截图教程,对截图功能感兴趣的小伙伴们可以参考一下 最近有时间了解了下html5的各API,发现新浪微博的头像设置是使用canva ...

  3. 学习笔记:HTML5 Canvas绘制简单图形

    HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...

  4. 使用 HTML5 Canvas 绘制出惊艳的水滴效果

    HTML5 在不久前正式成为推荐标准,标志着全新的 Web 时代已经来临.在众多 HTML5 特性中,Canvas 元素用于在网页上绘制图形,该元素标签强大之处在于可以直接在 HTML 上进行图形操作 ...

  5. 使用html5 canvas绘制图片

    注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...

  6. html5 Canvas绘制图形入门详解

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

  7. 解决html5 canvas 绘制字体、图片与图形模糊问题

    html5 canvas 绘制字体.图片与图形模糊问题 发生情况 多出现在高dpi设备,这意味着每平方英寸有更多的像素,如手机,平板电脑.当然很多高端台式电脑也有高分辨率高dpi的显示器. canva ...

  8. 使用html5 Canvas绘制线条(直线、折线等)

    使用html5 Canvas绘制直线所需的CanvasRenderingContext2D对象的主要属性和方法(有"()"者为方法)如下: 属性或方法 基本描述 strokeSty ...

  9. html5 canvas绘制环形进度条,环形渐变色仪表图

    html5 canvas绘制环形进度条,环形渐变色仪表图                                             在绘制圆环前,我们需要知道canvas arc() 方 ...

随机推荐

  1. 编译安装nginx

    一.安装工具yum -y install zlib zlib-devel openssl openssl-devel pcre-devel cc-c++ autoconf automakeyum -y ...

  2. 分享一个常用Adb命令

    分享一个常用Adb命令 首先 首先感谢@xuxu的常用adb命令,收益良多,但是已经不能满足于我,所以补充了下. 再者 好久没发帖了,最近论坛老司机们都在讨论/总结,我就用这个干货回报吧. 最后 基于 ...

  3. Centos 下编译安装Redis

    安装环境说明: 操作系统:Centos 6.5 -64bit 安装路径:/usr/local/redis 开始编译redis tar -zxvf redis-2.8.19.tar.gz cd redi ...

  4. Android应用请求获取Root权限

    应用获取Root权限的原理:让应用的代码执行目录获取最高权限.在Linux中通过chmod 777 [代码执行目录] /** * 应用程序运行命令获取 Root权限,设备必须已破解(获得ROOT权限) ...

  5. Double的精度问题

    /** * 自定义Math工具类 * */ public class MyMathTools { /** * 提供精确的小数位四舍五入处理. * * @param v * 需要四舍五入的数字 * @p ...

  6. D3中selection之使用

    1. 极为重要的reference: [1] How selections works. http://bost.ocks.org/mike/selection/ [2] Nested selecti ...

  7. JAVA 引入 junit工具框架

    我遇到的麻烦 : 开始直接按照视频上的来做,直接也是引入的他上面的jar ,但是我只引入了一个,就是上面的junit-4.4.jar,然后就会报错,会出现,空指针的错误, 后面我又按照网上的教程 这里 ...

  8. Jsonp跨域

    Jsonp.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  9. webpack 打包一个简单react组件

    安装Webpack,并加载一个简单的React组件 全局的npm模块安装: npm install -g webpack 安装jsx-loader npm install --save-dev jsx ...

  10. Codeforces663E Binary Table(FWT)

    题目 Source http://codeforces.com/contest/663/problem/E Description You are given a table consisting o ...