canvas 画时钟 会动呦
//半径
var r = 130;
//重置原点
ctx.save();
ctx.translate(400, 500); //使用translate重置原点
function drawClock() { //画时钟不动的背景
//时钟外圈
ctx.beginPath();
ctx.arc(0, 0, r, 0, 2*Math.PI);
ctx.strokeStyle = 'blue';
ctx.lineWidth = 5;
ctx.stroke();
ctx.closePath(); //圆心
ctx.beginPath();
ctx.arc(0,0,5,0, 2*Math.PI);
ctx.fillStyle = 'black';
ctx.lineWidth = 1;
ctx.fill();
ctx.closePath(); //画hour数字
var hour = [1,2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
hour.forEach(function (value) {
var xValue = (r-28)*Math.cos(Math.PI*(value-3)/6);
var yValue = (r-28)*Math.sin(Math.PI*(value-3)/6);
ctx.font = "18px sans-serif";
ctx.textAlign = "center";
ctx.textBaseline = "middle";
ctx.fillStyle = 'black';
ctx.fillText(value, xValue, yValue);
});
//画刻度
for (var i=0; i<60; i++) {
ctx.beginPath();
var x = (r - 15)*Math.cos(i*2*Math.PI/60);
var y = (r - 15)*Math.sin(i*2*Math.PI/60);
if (i%5 === 0) {
ctx.strokeStyle = "#000";
ctx.arc(x, y, 2, 0, 2*Math.PI, true);
} else {
ctx.strokeStyle = "#bbb";
ctx.arc(x, y, 2, 0, 2*Math.PI, true);
}
ctx.stroke();
ctx.closePath();
}
} function moveClock() { //画会动的指针
let now = new Date();
let h = now.getHours();
ctx.save();
ctx.beginPath();
ctx.rotate(h*Math.PI/6);
ctx.moveTo(0,10);
ctx.lineTo(0, 55-r);
ctx.strokeStyle = 'blue';
ctx.lineWidth = 8;
ctx.lineCap = 'round';
ctx.stroke();
ctx.closePath();
ctx.restore(); //分针
var min = now.getMinutes();
ctx.save();
ctx.beginPath();
ctx.rotate(min*Math.PI/30);
ctx.moveTo(0,10);
ctx.lineTo(0, 40-r);
ctx.strokeStyle = 'green';
ctx.lineWidth = 8;
ctx.lineCap = 'round';
ctx.stroke();
ctx.closePath();
ctx.restore(); //s针
var s = now.getSeconds();
ctx.save();
ctx.beginPath();
ctx.rotate(s*Math.PI/30);
ctx.moveTo(0,10);
ctx.lineTo(0, 30-r);
ctx.strokeStyle = 'red';
ctx.lineWidth = 3;
ctx.lineCap = 'round';
ctx.stroke();
ctx.closePath();
ctx.restore();
} setInterval(function () { //隔一秒调用一次上面两个方法,调用之前先清除画板,否则会有很多指针。
ctx.clearRect(-130,-130, 260, 260);
drawClock();
moveClock();
}, 1000);
canvas 画时钟 会动呦的更多相关文章
- canvas画时钟
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- canvas画时钟,重拾乐趣!
canvas时钟--效果图 一.先来简单介绍画时钟需要的canvas知识 1.在HTML页面中添加canvas元素,必须定义canvas元素的id属性值以便接下来的调用. HTML代码: <ca ...
- html5学习(一)--canvas画时钟
利用空余时间学习一下html5. <!doctype html> <html> <head></head> <body> <canva ...
- 用canvas画时钟
效果图在博客首页上. html: <canvas id="canvas" >Your browser does not support canvas</canva ...
- 用canvas画“哆啦A梦”时钟
前言:今天看完了Js书的canvas画布那张,好开心~又是心爱的canvas~欧耶~ 之前看到有人建议我画蓝胖子,对哦,我怎么把童年最喜欢的蓝胖子忘了,为了表达我对蓝胖子的歉意,所以今天画了会动的he ...
- 深夜,用canvas画一个时钟
深夜,用canvas画一个时钟 查看demo 这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的.毕竟校招在刚 ...
- 简单酷炫的Canvas数字时钟
声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 我记得很早之前就看过这个DEMO,是岑安大大博客里看到的: 就是这个数字时钟,当时觉得这个创意不错,但是也没去折腾.直到昨天同事又在网上看 ...
- 用canvas绘制时钟
用canvas做时钟其实很简单,下面是我做出的效果: 是不是还挺漂亮的? 下面上代码: html <div class="whole"> <canvas id=& ...
- [JS,Canvas]日历时钟
[JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...
随机推荐
- 【sql注入教程】SQL注入是什么?我们如何去玩转它
[sql注入教程]SQL注入是什么?我们如何去玩转它 本文转自:i春秋社区 SQL注入攻击是黑客攻击数据库最常见手段之一.简单讲,SQL注入攻击是黑客利用网站程序漏洞,通过提交精心构造的SQL语句 ...
- 超实用的 Nginx 极简教程,覆盖了常用场景
概述 什么是 Nginx? Nginx (engine x) 是一款轻量级的 Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 什么是反向代理? 反向代理(Reverse ...
- 第87节:Java中的Bootstrap基础与SQL入门
第87节:Java中的Bootstrap基础与SQL入门 前言复习 什么是JQ? : write less do more 写更少的代码,做更多的事 找出所有兄弟: $("div" ...
- ubuntu ImageMagick 图像转换工具
ImageMagick(简称 IM)是一个支持 GPL 协议的开源免费软件包.它由一组命令行工具组成的.它可以对超过 100 种的图像格式(包括 DPX, EXR, GIF, JPEG, JPEG-2 ...
- IDEA整合Junit详细步骤
一.添加Junit插件. 1.file-->setting-->plugins-->搜索Junit-->安装插件(一般已默认安装,无需手动安装). 二.设置Junit测试参数: ...
- 浅谈工作单元 在整个 ABP 框架当中的应用
ABP在其内部实现了工作单元模式,统一地进行事务与连接管理. 其核心就是通过 Castle 的 Dynamic Proxy 进行动态代理,在组件注册的时候进行拦截器注入,拦截到实现了 Unit Of ...
- HTTP/2协议–特性扫盲篇
HTTP/2协议–特性扫盲篇 随着web技术的飞速发展,1999年制定的HTTP 1.1已经无法满足大家对性能的要求,Google推出协议SPDY,旨在解决HTTP 1.1中广为人知的性能问题.SPD ...
- CentOS 7的安装详解
不多说,直接上干货! CentOS 6.5的安装详解 主流: 目前的Linux操作系统主要应用于生产环境, 主流企业级Linux系统仍旧是RedHat或者CentOS. 免费: RedHat 和Ce ...
- Redis 超时排查
突然收到告警,提示redis挂了,同时大群也在说某某redis连接超时了,过了一会儿就恢复了.这时登上服务器,查看监控.首先看看qps: 可以看到qps并不高,但是中间有段时间没取到数据是怎么回事?那 ...
- How Tomcat works — 一、怎样阅读源码
在编程的道路上,通过阅读优秀的代码来提升自己是很好的办法.一直想阅读一些开源项目,可是没有合适的机会开始.最近做项目的时候用到了shiro,需要做集群的session共享,经过查找发现tomcat的s ...