WEB前端开发学习----9. 使用canvas来画个时钟

canvas元素在html5中的重要性非同一般。配合JS让我们实现了在浏览器页面中作画的强大功能。不再单单依靠图片,flash等外部文件,减少http请求,从而网页加载速度更加快捷。

简单的线段:

看个小演示  canvas小房子

不用函数累死人。。。。

旋转:

使用提供的rotate()方法。需要注意的是,在旋转前,应该重新定位原点。一般来说将要旋转的图像的端点重定向为原点,以此为基础来旋转。也就是说先定位,再设置旋转角度,最后画图。看个演示  canvas 扇子。这样要比一道一道的画线方便许多。

用渐变色填充图像:

分为径向渐变和线性渐变,有点类似于CSS3的渐变操作。不需要再用图片来做渐变背景了。

看个演示 canvas 立体小球

用这些方法就可以做一个时钟了,纯canvas+js,不使用图片。

查看效果 canvas时钟

完整的代码:

[html] view plaincopy

  1. <span style="font-family:Microsoft YaHei;font-size:14px;"><!DOCTYPE html>
  2. <html>
  3. <head>
  4. <metac charset=UTF-8>
  5. <title>时钟</title>
  6. </head>
  7. <body>
  8. <canvas id="canvas" width="500" height="500">请更新浏览器版本</canvas>
  9. <script>
  10. var can=document.getElementById("canvas");
  11. var cxt=can.getContext("2d");
  12. function drawClock(){
  13. //清楚画布
  14. cxt.clearRect(0, 0, 500, 500);
  15. //得到当前时间
  16. var time=new Date();
  17. var hours=time.getHours();
  18. var mins=time.getMinutes();
  19. var secs=time.getSeconds();
  20. //转换为12进制
  21. hours=hours>12?hours-12:hours;
  22. //小时必须获得浮点型,不能只显示整点
  23. hours=hours+mins/60;
  24. //先画出表盘
  25. cxt.lineWidth=10;
  26. cxt.strokeStyle="blue";
  27. cxt.beginPath();
  28. cxt.arc(250, 250, 200, 0, 360, false);
  29. cxt.closePath();
  30. cxt.stroke();
  31. //画出时刻
  32. for(var i=0;i<12;i++){
  33. cxt.save();
  34. cxt.beginPath();
  35. cxt.lineWidth=7;
  36. cxt.strokeStyle="black";
  37. //按照圆心来旋转,好计算
  38. cxt.translate(250, 250);
  39. cxt.rotate(i*30*Math.PI/180);
  40. cxt.beginPath();
  41. cxt.moveTo(0, -170);
  42. cxt.lineTo(0, -190);
  43. cxt.closePath();
  44. cxt.stroke();
  45. cxt.restore();
  46. }
  47. for(var i=0;i<60;i++){
  48. cxt.save();
  49. cxt.beginPath();
  50. cxt.lineWidth=5;
  51. cxt.strokeStyle="black";
  52. //按照圆心来旋转,好计算
  53. cxt.translate(250, 250);
  54. cxt.rotate(i*6*Math.PI/180);
  55. cxt.beginPath();
  56. cxt.moveTo(0, -180);
  57. cxt.lineTo(0, -190);
  58. cxt.closePath();
  59. cxt.stroke();
  60. cxt.restore();
  61. }
  62. //画出时针
  63. cxt.save();
  64. cxt.lineWidth=7;
  65. cxt.strokeStyle="black";
  66. cxt.translate(250, 250);
  67. cxt.rotate(hours*30*Math.PI/180);
  68. cxt.beginPath();
  69. cxt.moveTo(0, 15);
  70. cxt.lineTo(0, -130);
  71. cxt.closePath();
  72. cxt.stroke();
  73. cxt.restore();
  74. //分针
  75. cxt.save();
  76. cxt.lineWidth=5;
  77. cxt.strokeStyle="black";
  78. cxt.translate(250, 250);
  79. cxt.rotate(mins*6*Math.PI/180);
  80. cxt.beginPath();
  81. cxt.moveTo(0, 15);
  82. cxt.lineTo(0, -150);
  83. cxt.closePath();
  84. cxt.stroke();
  85. cxt.restore();
  86. //秒针
  87. cxt.save();
  88. cxt.lineWidth=3;
  89. cxt.strokeStyle="red";
  90. cxt.translate(250, 250);
  91. cxt.rotate(secs*6*Math.PI/180);
  92. cxt.beginPath();
  93. cxt.moveTo(0, 15);
  94. cxt.lineTo(0, -172);
  95. cxt.closePath();
  96. cxt.stroke();
  97. //美化 画出中间的小圆点
  98. cxt.beginPath();
  99. cxt.arc(0, 0, 6, 0, 360, false);
  100. cxt.closePath();
  101. cxt.fillStyle="black";
  102. cxt.fill();
  103. cxt.stroke();
  104. //画出秒针前段的小圆点
  105. cxt.beginPath();
  106. cxt.arc(0, -150, 8, 0, 360, false);
  107. cxt.closePath();
  108. cxt.fillStyle="black";
  109. cxt.fill();
  110. cxt.stroke();
  111. cxt.restore();
  112. }
  113. //为了避免打开后等待1秒才画图,先调用一次
  114. drawClock();
  115. setInterval(drawClock,1000);
  116. </script>
  117. </body>
  118. </html></span>
时间: 2025-01-16 10:43:13

WEB前端开发学习----9. 使用canvas来画个时钟的相关文章

WEB前端开发学习:源码canvas 雪

WEB前端开发学习:源码canvas 雪 双旦节要到了,程序员们为了响应气氛,特别用代码制作了动态雪花,WEB前端开发学习的初学者们一起跟着案例做一遍吧! <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body style="overflow: hidden;margin:

2018web前端学习路线,详谈web前端开发学习路线

近几年IT业可谓是发展火热,而且新生了很多的职业.在这众多的新生职业中备受瞩目的当属web前端工程师了,web前端在IT行业真正受到重视的时间不超过五年,但是web前端的发展前景却是非常的可观,好前景高薪资吸引了众多的人投入到前端开发的学习当中去,想学好web前端,这份web前端开发学习路线分享给你. 好的学习方法和掌握好正确的学习路线可以让我们的学习达到事半功倍的效果,如果你新手想要学习web前端的话,那么这份前端的学习路线图很适合你.这份学习路线的课程涵盖JavaScript.HTML5.C

web前端开发学习路线图分享,详谈2018web前端开发学习路线

近几年IT业可谓是发展火热,而且新生了很多的职业.例如安卓开发工程师.iOS开发工程师.在这众多的新生职业中备受瞩目的当属web前端工程师了,前端工程师薪资高,就业发展前景好,更多的人选择了这一职业成为自己的发展方向,想要自己成为一名合格的web前端工程师,web前端开发学习路线图值得大家去看看.挺适合大家借鉴来学习的.web前端课程包括了几个方面的内容: 1.学习HTML,这是最简单,最基本的是要掌握div,formtable.Ulli.P.跨度.字体这些标签,这些都是最常用的,尤其是DIV和

Web 前端开发学习之路(入门篇)

字数1374 阅读4622 评论0 喜欢49 以前学习过一段时间的web前端开发,整理了一些我看过的/我认为比较好的学习资料(网站.书籍).不要问我为啥没有进阶版,我只是一条产品汪而已,求轻喷.== 以下引用知乎 @李路 的话. 以我的经验,大部分技术,熟读下列四类书籍即可. 入门,用浅显的语言和方式讲述正确的道理和方法,如head first系列全面,巨细无遗地探讨每个细节,遇到疑难问题时往往可以在这里得到理论解答,如Definitive Guide/Programming xx系列实践,结合

web前端开发学习路线

首先分享一下我的经验,想做好一件事,必须要花费一些功夫,然后是多学.多思.多练.多交流.多总结,发现自己的问题,然后一定要克服,在状态不好的情况下,往往要及时调整.新手学习前端的话,一定要想想为什么要学习它,是出于一种什么心态,然后定位好自己,多向大牛请教,多教一些没有自己水平高的人,那样往往能让自己成长的快,切勿急躁.初学可以看一些入门视频教程,之后可以买一些书,做一些小项目,要学会投资,分析自己的现状及能力,实时调整,一定要有自己的想法,懂得创新.在这里一定要对自己做分析,然后找出一种适合的

web前端开发学习课程大纲路线图及学习方法分享

想学好web前端开发,要学会阅读别人优秀的代码.web前端开发思想并不是统一固定不变的,阅读别人代码的过程就是间接的在向别人学习,这一过程中可以学习别人的开发思路,不同的人思路是不一样的,如果别人写的代码很优秀.很简单.且运行和性能上有很大的优势,就有很多可以借鉴的地方. 以下这份web前端学习路线图适合所以零基础的学员学习,都是从浅入深,没有基础的同学跟着视频教程及课程大纲一步一步的学习是可以很好的掌握的. 那么想要学好html5前端开发,那么需要掌握的专业技术有: 第一阶段:前端页面重构 内

干货教程 | Web前端开发学习入门指南

互联网的高速发展,让企业对于Web前端开发人员的需求越来越大,想要进入这行的人自然也逐渐增多.很多新手在进入这行时都会徘徊.犹豫.疑问,想学习又怕学不好,下面就和Web前端小编一起来看看. 1.HTML的学习 超文本标记语言(HyperTextMark-up Language简称HTML)是一个网页的骨架,无论是静态网页还是动态网页,最终返回到浏览器端的都是HTML代码,浏览器将HTML代码解释渲染后呈现给用户.因此,我们必须掌握HTML的基本结构和常用标记及属性. HTML的学习是一个记忆和理

web前端开发学习视频教程下载(百G)

1.妙味WEB前端开发全套视频教程 链接: http://pan.baidu.com/s/1bf1Ow2 密码: 2yyu 2.极客学院前端教程(html5 Bootstrap Nodejs) 链接: http://pan.baidu.com/s/1eQFcHoe 密码: iem6 3.前端与移动开发基础视频(h5\css3\html\css) 链接: http://pan.baidu.com/s/1c1wiSQc 密码:2cp4 4.2015前端工程师培训视频教程(html5\UI\JS\JQ

WEB前端开发学习小结

[引言] 在经过了将近六个月的学习时间终于对B/S的学习有了一定认识,在这段时间里可以说自己的收获非常的多,从一 个对web开发没有任何基础的小小小菜鸟变为了一个菜鸟,虽然自己现在还是一个菜鸟,但是自己和半年前的自己对 比进步还是巨大的,因为现在的自己至少到了知道"是什么?"的阶段,对已项目中用到的知识还是比较熟悉的(宏 观),在这个过程中也会因为一个错误困扰自己很长时间,因为那是自己对于挑错还是非常不熟悉的,像哪些辅助工 具firebug等都不知道是什么,而现在运用的还算是比较灵活,