利用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 相关文章推荐
JS预览图像将本地图片显示到浏览器上
Aug 25 Javascript
基于jquery异步传输json数据格式实例代码
Nov 23 Javascript
浅谈javascript六种数据类型以及特殊注意点
Dec 20 Javascript
JavaScript中跨域调用Flash的方法
Aug 11 Javascript
JavaScript中指定函数名称的相关方法
Jun 04 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
Feb 19 Javascript
浅谈React中组件间抽象
Jan 27 Javascript
nginx+vue.js实现前后端分离的示例代码
Feb 12 Javascript
Vue.js实现数据响应的方法
Aug 13 Javascript
layui自定义工具栏的方法
Sep 19 Javascript
layui扩展上传组件模拟进度条的方法
Sep 23 Javascript
利用node.js开发cli的完整步骤
Dec 29 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取二进制文件头快速判断文件类型的实现代码
2013/08/05 PHP
asp.net下利用js实现返回上一页的实现方法小集
2009/11/24 Javascript
javascript oop开发滑动(slide)菜单控件
2010/08/25 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
浅谈React高阶组件
2018/03/28 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
2018/07/10 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
基于python实现查询ip地址来源
2020/06/02 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
Html5写一个简单的俄罗斯方块小游戏
2019/12/03 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
介绍一下Make? 为什么使用make
2013/12/08 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
超市采购员岗位职责
2014/02/01 职场文书
颐和园导游词400字
2015/01/30 职场文书
行政人事主管岗位职责
2015/04/11 职场文书
教师节随笔
2015/08/15 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python
html5调用摄像头实例代码
2021/06/28 HTML / CSS
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技