<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>canvas画时钟</title>
<script>
window.onload = function() {
var canvas = document.getElementById("canvas");
canvas.width = canvas.height = 400;
canvas.style.background = "white";
if (canvas.getContext) {
var ext = canvas.getContext("2d");
drawClock()
setInterval(drawClock, 1000);
}
function drawClock() {
var x = 200;
var y = 200;
var r = 150;
ext.clearRect(0, 0, canvas.width, canvas.height)
var oData = new Date();
var hours = oData.getHours();
var minutes = oData.getMinutes();
var seconds = oData.getSeconds();
var hoursValue = (-90 + hours * 30 + minutes / 2) * Math.PI / 180; //分针过了30,时针不应该正好在整点上,2分钟一度;
var minutesValue = (-90 + minutes * 6) * Math.PI / 180;
var secondsValue = (-90 + seconds * 6) * Math.PI / 180;
ext.lineWidth = 2
ext.arc(x, y, r, 0, Math.PI * 2, false);
ext.stroke();
//画小刻度
for (var i = 0; i < 60; i++) {
ext.strokeStyle = "black"
ext.lineWidth = 1;
ext.beginPath();
ext.moveTo(x, y);
ext.arc(x, y, r, 6 * i * Math.PI / 180, 6 * (i + 1) * Math.PI / 180, false)
ext.closePath();
ext.stroke();
}
drawBlankCircle(10)
//画大刻度
for (var i = 0; i < 12; i++) {
ext.lineWidth = 3;
ext.strokeStyle = "green"
ext.beginPath();
ext.moveTo(x, y);
ext.arc(x, y, r, 30 * i * Math.PI / 180, 30 * (i + 1) * Math.PI / 180, false)
ext.closePath();
ext.stroke();
}
drawBlankCircle(15)
//画空白覆盖圆;
function drawBlankCircle(d) {
ext.fillStyle = "white"
ext.beginPath();
ext.arc(x, y, r - d, 0, Math.PI * 2, false);
ext.closePath();
ext.fill();
}
//画时针;
ext.lineWidth = 5;
ext.strokeStyle = "#f90"
ext.beginPath();
ext.moveTo(x, y);
ext.arc(x, y, r - 60, hoursValue, hoursValue, false);
ext.closePath();
ext.stroke();
//画分针;
ext.lineWidth = 3;
ext.strokeStyle = "red"
ext.beginPath();
ext.moveTo(x, y);
ext.arc(x, y, r - 40, minutesValue, minutesValue, false);
ext.closePath();
ext.stroke();
//画秒针;
ext.lineWidth = 1;
ext.strokeStyle = "black"
ext.beginPath();
ext.moveTo(x, y);
ext.arc(x, y, r - 25, secondsValue, secondsValue, false);
ext.closePath();
ext.stroke();
//画表盘中心小圆;
ext.fillStyle = "black";
ext.beginPath();
ext.arc(x, y, 6, 0, Math.PI * 2, false);
ext.closePath();
ext.fill();
}
}
</script>
</head>
<body >
<canvas id="canvas">
</canvas>
</body>
</html>

canvas画时钟的更多相关文章

  1. canvas画时钟,重拾乐趣!

    canvas时钟--效果图 一.先来简单介绍画时钟需要的canvas知识 1.在HTML页面中添加canvas元素,必须定义canvas元素的id属性值以便接下来的调用. HTML代码: <ca ...

  2. canvas 画时钟 会动呦

    //半径 var r = 130; //重置原点 ctx.save(); ctx.translate(400, 500); //使用translate重置原点 function drawClock() ...

  3. html5学习(一)--canvas画时钟

    利用空余时间学习一下html5. <!doctype html> <html> <head></head> <body> <canva ...

  4. 用canvas画时钟

    效果图在博客首页上. html: <canvas id="canvas" >Your browser does not support canvas</canva ...

  5. 深夜,用canvas画一个时钟

    深夜,用canvas画一个时钟 查看demo 这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的.毕竟校招在刚 ...

  6. [JS,Canvas]日历时钟

    [JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...

  7. 使用canvas绘制时钟

    使用canvas绘制时钟  什么使canvas呢?HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.<canvas> 标签只是图 ...

  8. HTML5 之Canvas 绘制时钟 Demo

    <!DOCTYPE html> <html> <head> <title>Canvas 之 时钟 Demo</title> <!--简 ...

  9. 简单酷炫的Canvas数字时钟

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 我记得很早之前就看过这个DEMO,是岑安大大博客里看到的: 就是这个数字时钟,当时觉得这个创意不错,但是也没去折腾.直到昨天同事又在网上看 ...

随机推荐

  1. wpf依赖属性、绑定实现原理、附加属性学习

    依赖属性和普通属性相比节省内存的原因:对于普通属性,每个对象有需要存储一个普通属性的值,即便是默认值.而依赖属性的默认值是静态的存储在类中的,所有对象都使用同一默认值,所以对于拥有大量属性的控件来说这 ...

  2. JavaScript高级 引用类型(二)《JavaScript高级程序设计(第三版)》

    五.Function类型 是JS中最重要的一种引用类型 构造方式:(三种) 函数声明: 函数表达式定义: 函数构造器: 没有重载: 如果有两个相同函数名的函数,执行时,执行最近被定义的一次. 函数声明 ...

  3. [视频]ARM告诉你物联网怎么玩,mbed 6LoWPan demo

    该视频演示了基于arm mbed的物联网设备间的6LoWPAN应用,如连接家里的土壤湿度传感器,灯光控制,安防联动等应用. 演示视频       原创文章,转载请注明: 转载自 http://www. ...

  4. dedecms5.7 联动类型无法显示

    dedecms5.7 联动类型无法显示 问题原因:一般是由于路径问题( 路径缺少分隔符'/' )导致js无法正常加载 如果遇到该类问题,尝试通过firebug工具检查js是否被正确加载. 如果是路径问 ...

  5. 删:[CentOS 7] 安装nginx

    下载对应当前系统版本的nginx包(package) # wget  http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-cent ...

  6. Eclipse编码问题

    通常在Eclipse下,mac和windows编码是不一样的.如果含有中文java sources通常会出现乱码. 解决---小程序! import java.io.File; import java ...

  7. Laravel 5 基础(六)- 数据库迁移(Migrations)

    database migrations 是laravel最强大的功能之一.数据库迁移可以理解为数据库的版本控制器. 在 database/migrations 目录中包含两个迁移文件,一个建立用户表, ...

  8. python中的remove趣谈

    首先我们要知道remove做的操作是顺序遍历list表,找到第一个匹配的项时删掉该项,并不会再往下找,那我们看下面的代码 mylist = [1,2,3] for i in mylist: print ...

  9. activiti

    http://activiti.org/designer/archived/  eclipse plugin

  10. IO - 同步,异步,阻塞,非阻塞 (转)

    转自:http://blog.csdn.net/historyasamirror/article/details/5778378 向大牛学习,言归正传.同步(synchronous) IO和异步(as ...