利用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 编写规范
Mar 03 Javascript
通过$(this)使用jQuery包装后的方法或属性
May 18 Javascript
JavaScript中实现最高效的数组乱序方法
Oct 11 Javascript
jQuery表单美化插件jqTransform使用详解
Apr 12 Javascript
js实现图片轮播效果
Dec 19 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
Jul 28 Javascript
浅谈es6 javascript的map数据结构
Dec 14 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
Nov 23 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
Apr 04 Javascript
Vue使用mixin分发组件的可复用功能
Sep 01 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
Sep 13 Javascript
JavaScript实现京东快递单号查询
Nov 30 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文件读写操作之文件读取方法详解
2011/01/13 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
使用jQuery在对象中缓存选择器的简单方法
2015/06/30 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
echarts整合多个类似option的方法实例
2018/07/10 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
VUE.CLI4.0配置多页面入口的实现
2019/11/25 Javascript
微信小程序添加插屏广告并设置显示频率(一天一次)
2019/12/06 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
利用python编写一个图片主色转换的脚本
2017/12/07 Python
python模拟事件触发机制详解
2018/01/19 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
使用python获取邮箱邮件的设置方法
2019/09/20 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
服务员自我评价
2014/01/25 职场文书
记帐员岗位责任制
2014/02/08 职场文书
工艺员岗位职责
2014/02/11 职场文书
服装促销活动方案
2014/02/23 职场文书
房屋买卖协议书
2014/04/10 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
介绍信的写法
2015/01/31 职场文书
请客吃饭开场白
2015/06/01 职场文书
秋季运动会加油词
2015/07/18 职场文书
2016年教代会开幕词
2016/03/04 职场文书
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
用Python生成会跳舞的美女
2022/01/18 Python
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android