利用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 相关文章推荐
jQuery中的$.ajax()方法应用
May 06 Javascript
JS回调函数的应用简单实例
Sep 17 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
Dec 26 Javascript
JavaScript基础知识及常用方法总结
Jan 10 Javascript
js中数组插入、删除元素操作的方法
Feb 15 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
Feb 16 Javascript
jQuery实现全选、反选和不选功能
Aug 16 jQuery
详解使用create-react-app添加css modules、sasss和antd
Jul 31 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
Sep 21 Javascript
vscode下vue项目中eslint的使用方法
Jan 13 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
Node.js API详解之 Error模块用法实例分析
May 14 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 常用类汇总 推荐收藏
2010/05/13 PHP
PHP遍历二维数组的代码
2011/04/22 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
JavaScript 继承的实现
2009/07/09 Javascript
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
2009/10/29 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python使用递归解决全排列数字示例
2014/02/11 Python
一步步解析Python斗牛游戏的概率
2016/02/12 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
python中sort和sorted排序的实例方法
2019/08/26 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
CSS3 简写animation
2012/05/10 HTML / CSS
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
美国温暖商店:The Warming Store
2018/12/15 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
大学生的创业计划书就该这么写
2014/01/30 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
授权委托书格式范文
2014/08/02 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
生活委员竞选稿
2015/11/21 职场文书