利用H5api实现时钟的绘制(javascript)


Posted in Javascript onSeptember 13, 2020

HTML5的canvas标签用于绘制图像(通过脚本,通常是 JavaScript)。不过,canvas元素本身并没有绘制能力(它仅仅是图形的容器)必须使用脚本来完成实际的绘图任务。

下面,具体总结了一下使用画布canvas的步骤:

画布:

canvas

在页面上规划出一块空间,canvas标签,通过javascript控制画布完成绘制

1.获取画布

var canvas=document.getElementById("");

2.获取上下文对象 (获取画笔)

var cx=canvas.getContext(“2d”);

3.设置画笔样式

cx.fillStyle=‘red';
cx.strokeStyle=‘blue';

4.开始绘制

下面是对于canvas使用,绘制一个简单钟表的小例子:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <script>
 window.onload=function(){
  //1.获取画布
  var canvas=document.getElementById("canvas");
  //2.获取画笔
  var cx=canvas.getContext("2d");
  
  function clock(){
  //3.设置画笔样式
  cx.fillStyle="orange";
  //4.绘制图形
  //绘制表盘
  cx.beginPath();
  cx.arc(300,300,200,0,Math.PI*2)
  cx.closePath();
  cx.fill();
  //绘制时刻度
  cx.lineWidth=2;
  cx.strokeStyle="black";
  for(var i=0;i<12;i++){
   cx.save();
   cx.translate(300,300);
   cx.rotate(i*(Math.PI/6));
   // cx.beginPath();
   cx.moveTo(0,-180);
   cx.lineTo(0,-200);
   // cx.closePath();
   cx.stroke();
   cx.fillStyle="black";
   cx.font="16px blod";
   cx.rotate(Math.PI/6)
   cx.fillText(i+1,-5,-220);
   cx.restore();
  }
  //绘制分刻度
  for(var i=0;i<60;i++){
   cx.save();
   cx.translate(300,300);
   cx.rotate(i*(Math.PI/30));
   cx.beginPath();
   cx.moveTo(0,-190);
   cx.lineTo(0,-200);
   cx.closePath();
   cx.stroke();
   cx.restore();
  }
  //获取当前时间
  var today=new Date();
  var hour=today.getHours();
  var min=today.getMinutes();
  var sec=today.getSeconds();
  hour=hour+min/60;
  //绘制时针
  cx.lineWidth=5;
  cx.save();
  cx.beginPath();
  cx.translate(300,300);
  cx.rotate(hour*(Math.PI/6));
  cx.moveTo(0,10);
  cx.lineTo(0,-100);
  cx.closePath();
  cx.stroke();
  cx.restore();
  //绘制分针
  cx.lineWidth=3;
  cx.save();
  cx.beginPath();
  cx.translate(300,300);
  cx.rotate(min*(Math.PI/30));
  cx.moveTo(0,10);
  cx.lineTo(0,-120);
  cx.closePath();
  cx.stroke();
  cx.restore();
  //绘制秒针
  cx.lineWidth=1;
  cx.strokeStyle="red";
  cx.save();
  cx.beginPath();
  cx.translate(300,300);
  cx.rotate(sec*(Math.PI/30));
  cx.moveTo(0,10);
  cx.lineTo(0,-160);
  cx.closePath();
  cx.stroke();
  cx.restore();
  //绘制交叉处
  cx.fillStyle="#ccc";
  cx.strokeStyle="red";
  cx.save();
  cx.translate(300,300);
  cx.beginPath();
  cx.arc(0,0,5,0,Math.PI*2);
  cx.closePath();
  cx.fill();
  cx.stroke();
  cx.restore();
   setTimeout(clock,1000);
  }
  clock()
 }
 </script>
</head>
<body>
 <canvas id="canvas" width="600px" height="600px" style="background-color: #ccc;"></canvas>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Firefox outerHTML实现代码
Jun 04 Javascript
JavaScript单元测试ABC
Apr 12 Javascript
jquery遍历checkbox的注意事项说明
Feb 21 Javascript
限制上传文件大小和格式的jQuery插件实例
Jan 24 Javascript
javascript实现在指定元素中垂直水平居中
Sep 13 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
Sep 20 Javascript
Bootstrap表单制作代码
Mar 17 Javascript
angular json对象push到数组中的方法
Feb 27 Javascript
vue2.0 根据状态值进行样式的改变展示方法
Mar 13 Javascript
在小程序中使用Echart图表的示例代码
Aug 02 Javascript
Vue.js实现表格渲染的方法
Sep 07 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
Jul 31 Javascript
浅谈javascript事件环微任务和宏任务队列原理
Sep 12 #Javascript
返回上一个url并刷新界面的js代码
Sep 12 #Javascript
Vue和React有哪些区别
Sep 12 #Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
Sep 12 #Javascript
解决vue项目 build之后资源文件找不到的问题
Sep 12 #Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
Sep 12 #Javascript
vue v-on:click传递动态参数的步骤
Sep 11 #Javascript
You might like
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
利用纯js + transition动画实现移动端web轮播图详解
2017/09/10 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
angular4自定义组件详解
2017/09/28 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
Python性能优化技巧
2015/03/09 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
python实现抖音点赞功能
2019/04/07 Python
Python微信操控itchat的方法
2019/05/31 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
计算机工程学院个人求职信
2013/10/05 职场文书
工程师求职简历的自我评价分享
2013/10/10 职场文书
应届毕业生求职自荐书
2014/01/03 职场文书
致百米运动员广播稿
2014/01/29 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
离职告别感言
2015/08/04 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
如何用python清洗文件中的数据
2021/06/18 Python
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server