今天用H5中的canvas标签做一个时钟,H5中有很多好用的新增标签,真的很不错。

1.canvas标签介绍

<canvas> 标签定义图形,比如图表和其他图像,你必须使用脚本来绘制图形。在画布上(Canvas)画一个红色矩形,渐变矩形,彩色矩形,和一些彩色的文字。

HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成.不过不是所有的浏览器都支持这个标签的,支持的有谷歌4.0,ie9.0,火狐2.0等。


2.时钟的绘制第一步

在html中添加以下代码,一个宽高都是100的画布。

<canvas id="myCanvas" width="100" height="100"></canvas>

 3.用js开始绘制钟表

<script type="text/javascript">
var myCanvas = document.getElementById('myCanvas');
var c = myCanvas.getContext('2d');
function clock(){
c.clearRect(0,0,100,100);
var data = new Date();
var sec =data.getSeconds();
var min =data.getMinutes();
var hour=data.getHours(); c.save();
c.translate(50,50);
c.rotate(-Math.PI/2);
//分钟刻度线
for(var i=0;i<60;i++){ //画12个刻度线
c.beginPath();
c.strokeStyle = "#f00";
c.lineWidth = 1 ;
c.moveTo(45,0);
c.lineTo(40,0);
c.stroke();
c.rotate(Math.PI/30); //每个6deg画一个时钟刻度线
c.closePath();
}
//时钟刻度线
for(var i=0;i<12;i++){ //画12个刻度线
c.beginPath();
c.strokeStyle = "#000";
c.lineWidth = 2 ;
c.moveTo(45,0);
c.lineTo(40,0);
c.stroke();
c.rotate(Math.PI/6); //每个30deg画一个时钟刻度线
c.closePath();
}
//外表盘
c.beginPath();
c.strokeStyle = "pink";
c.arc(0,0,55,0,Math.PI*2);
c.lineWidth = 16 ;
c.stroke();
c.closePath(); //画时针
hour = hour>12?hour-12:hour;
// console.log(hour);
c.beginPath();
c.save();
c.rotate(Math.PI/6*hour+Math.PI/6*min/60+Math.PI/6*sec/3600);
c.strokeStyle = "yellowgreen";
c.lineWidth = 4 ;
c.moveTo(-25,0);
c.lineTo(40,0);
c.stroke();
c.restore();
c.closePath(); //画分针
// console.log(min);
c.beginPath();
c.save();
c.rotate(Math.PI/30*min+Math.PI/30*sec/60);
c.strokeStyle = "springgreen";
c.lineWidth = 3 ;
c.moveTo(-15,0);
c.lineTo(40,0);
c.stroke();
c.restore();
c.closePath(); //画秒针
c.beginPath();
c.save();
c.rotate(Math.PI/30*sec);
c.strokeStyle = "red";
c.lineWidth = 2 ;
c.moveTo(-20,0);
c.lineTo(40,0);
c.stroke();
c.restore();
c.closePath(); c.restore();
}
clock();
setInterval(clock,100);
</script>

 


   4.得到下图的效果

时钟已经画完了,关于形状和颜色可以自己再修改的。这个标签的很多使用方法我就不一一的说了,下面这个地址,大家可以查看的                     http://www.runoob.com/html/html5-canvas.html

H5 canvas圆形的时钟的更多相关文章

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

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

  2. canvas做的时钟,学习下

    canvas标签只是图形容器,您必须使用脚本来绘制图形. getContext() 方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性.——获取上下文对象. getContext(" ...

  3. H5 canvas绘制出现模糊的问题

    在之前做移动端小游戏幸运转盘.九宫格转盘,使用到了 canvas ,也是第一次在项目中使用 canvas 来实现. 近期测试人员反应 canvas 绘制的内容太模糊,心想着用 canvas 绘制出来的 ...

  4. h5 canvas 小球移动

    h5 canvas 小球移动 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  5. h5 canvas 画图

    h5 canvas 画图 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  6. canvas炫酷时钟

    canvas炫酷时钟 实现的功能 主要用到canvas的一些基础api 直接看效果 html: <canvas id="myCanvas" width="500&q ...

  7. 通过H5的新标签canvas做出一个时钟的全过程,希望对初学者有帮助

    最近学习了H5中的一个新标签canvas并且用它做出了一个时钟,最下面是成品图像,还不错吧,这只是我学习中的一个小demo,做得有点粗糙,但终究是做出来了,以后再写自己的网页主页再做一个好看点放上去. ...

  8. canvas绘制简易时钟

    时钟绘制的非常简易,但该有的都有了. 效果图如下, <!DOCTYPE html> <html> <head lang="en"> <me ...

  9. html5 canvas 圆形抽奖的实例

    年底没啥,抽空学习了canvas,写了个html5抽奖的代码,造了个轮子,有用的童鞋可以拿走. 其中,canvas.onclick触发抽奖行为,概率可以在core.lottery()函数上添加,美化也 ...

随机推荐

  1. EF批量插入(转)

    原作者地址http://blog.csdn.net/zlts000/article/details/46385773 之前做项目的时候,做出来的系统的性能不太好,在框架中使用了EntityFramew ...

  2. Tomcat之jvm及连接数设置

    一.Tomcat的JVM提示内存溢出 查看%TOMCAT_HOME%\logs文件夹下,日志文件是否有内存溢出错误 二.修改Tomcat的JVM 1.错误提示:java.lang.OutOfMemor ...

  3. RabbitMQ集群搭建

    准备三个节点,系统为CentOS7 Node IP rabbitmq01 172.50.0.64 rabbitmq02 172.50.0.65 rabbitmq03 172.50.0.66 这里把no ...

  4. SQL Server 获取本周,本月,本年等时间内记录

    datediff(week,zy_time,getdate())=0 //查询本周 datediff(month,zy_time,getdate())=0 //查询本月 本季:select * fro ...

  5. 将ROS中的/sensor_msgs/NavSatFix数据导入google earth显示轨迹

    将ros中的gps_msg数据导入google earth显示轨迹 [TOC] 1. 获取GPS数据 将ros中发布的gps topic输出到文本中 rostopic echo -p /gpsData ...

  6. python_21_线程+进程+协程

    python_线程_进程_协程 什么是线程? -- os能够进行运算调度的最小单位,被包含在进程之中,是一串指令的集合 -- 每个线程都是独立的,可以访问同一进程下所有的资源 什么是进程? -- 每个 ...

  7. php判断多维数组的技巧

    直接上代码吧: if(count($array) == count($array, 1)){ echo '一维数组'; }else{ echo '多维数组'; } 看了下手册 int count (m ...

  8. R语言各种假设检验实例整理(常用)

    一.正态分布参数检验 例1. 某种原件的寿命X(以小时计)服从正态分布N(μ, σ)其中μ, σ2均未知.现测得16只元件的寿命如下: 159 280 101 212 224 379 179 264  ...

  9. 文本处理sed常用操作

    文本处理sed常用操作 linux sed (stream editor) is a Unix utility that parses and transforms text, using a sim ...

  10. 【Spark2.0源码学习】-1.概述

          Spark作为当前主流的分布式计算框架,其高效性.通用性.易用性使其得到广泛的关注,本系列博客不会介绍其原理.安装与使用相关知识,将会从源码角度进行深度分析,理解其背后的设计精髓,以便后续 ...