今天用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. Ubuntu14.04下CUDA7.5安装与配置

    一.下载: 在官网上下载cuda toolkit(所有需要安装都在里面包括驱动 toolkit Samples)下载网址: https://developer.nvidia.com/cuda-down ...

  2. Android中查看布局文件中的控件(view,id)在哪里被调用(使用)

    在阅读别人的代码时通常是很痛苦的,有时很想要看一看布局中的控件在哪里被调用了,为之很苦恼 在这里提供一种方法.   复制要查看的控件ID,到R文件中搜索到该ID,   接下来就好办的了,选中ID按下C ...

  3. Linux shell-grep

    grep --help备忘录 Usage: grep [OPTION]... PATTERN [FILE]...Search for PATTERN in each FILE or standard ...

  4. [Openfire]使用WebSocket建立Openfire的客户端

    近日工作闲暇之余,对IM系统产生了兴趣,转而研究了IM的内容.找了半天,知道比较流行的是Openfire的系统,Openfire有许多平台实现,由于我是做Web的,所以当然是希望寻找Web的实现.Op ...

  5. 在linux下使用百度ueditor编辑器上传图片

    百度ueditor编辑器虽然强大,但是也有不足的地方.如果对ueditor流程不是很熟悉可以说走的弯路比较多,费力不讨好.下面呢,就是要解决ueditor遇到的问题. 用ueditor上传图片遇到的问 ...

  6. Linux之例行(任务调度)

    一. 例行命令之at 1.1 at 仅执行一次就从Linux任务中取消  1.2 at 指令可以将工作命令写入工作记录文件,工作记录文件默认存放在/var/spool/at目录内  1.3 at 工作 ...

  7. 转载八个最佳Python IDE

    八个最佳Python IDE 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Python是一种功能强大.语言简洁的编程语言.本文向大家推荐8个适合Pyt ...

  8. String 类的实现(3)引用计数实现String类

    我们知道在C++中动态开辟空间时是用字符new和delete的.其中使用new test[N]方式开辟空间时实际上是开辟了(N*sizeof(test)+4)字节的空间.如图示其中保存N的值主要用于析 ...

  9. Struts2之i18N国际化

    对于i18n其实没有太多内容,一般的公司用不到这些内容,除非是跨国公司,但即便是跨国公司也不一定会使用i18n来进行国际化处理,所以本篇内容仅供大家了解,不做深入的探讨,希望通过本篇内容,可以帮助大家 ...

  10. 老李分享:SSL协议相关证书

    老李分享:SSL协议相关证书   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:9088214 ...