利用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 相关文章推荐
javascript实现动态增加删除表格行(兼容IE/FF)
Apr 02 Javascript
javascript中递归函数用法注意点
Jul 30 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
Mar 12 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
Aug 19 Javascript
详解微信小程序 页面跳转 传递参数
Dec 08 Javascript
js实现消息滚动效果
Jan 18 Javascript
js实现简单的二级联动效果
Mar 09 Javascript
VUE元素的隐藏和显示(v-show指令)
Jun 23 Javascript
详解webpack分包及异步加载套路
Jun 29 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
May 17 Javascript
JS利用prototype给类添加方法操作详解
Jun 21 Javascript
VUE 组件转换为微信小程序组件的方法
Nov 06 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
php 获取SWF动画截图示例代码
2014/02/10 PHP
实现获取http内容的php函数分享
2014/02/16 PHP
php结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
2011/03/01 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
JQuery事件委托原理与用法实例分析
2019/05/13 jQuery
Vue.js实现备忘录功能
2019/06/26 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
Python中的迭代器漫谈
2015/02/03 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
django 实现简单的插入视频
2020/04/07 Python
Python函数参数分类原理详解
2020/05/28 Python
Python os库常用操作代码汇总
2020/11/03 Python
Python如何使用神经网络进行简单文本分类
2021/02/25 Python
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
思想政治教育专业个人求职信范文
2013/12/20 职场文书
双十佳事迹材料
2014/01/29 职场文书
学生请假条
2014/04/11 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
上诉答辩状范文
2015/05/22 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
js不常见操作运算符总结
2021/11/20 Javascript
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server