利用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对象的代码分享
Nov 02 Javascript
jQuery中获取checkbox选中项等操作及注意事项
Nov 24 Javascript
JavaScript中按位“异或”运算符使用介绍
Mar 14 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
javaScript中Math()函数注意事项
Jun 18 Javascript
Jquery Ajax Error 调试错误的技巧
Nov 20 Javascript
在 Express 中使用模板引擎
Dec 10 Javascript
全面解析Bootstrap布局组件应用
Feb 22 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
Jun 17 Javascript
vue导出html、word和pdf的实现代码
Jul 31 Javascript
Vue的属性、方法、生命周期实例代码详解
Sep 17 Javascript
vue使用过滤器格式化日期
Jan 20 Vue.js
浅谈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+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
2015/08/23 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
php压缩文件夹最新版
2018/07/18 PHP
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
AngularJS Module方法详解
2015/12/08 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
jQuery pager.js 插件动态分页功能实例分析
2019/08/02 jQuery
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
python利用正则表达式提取字符串
2016/12/08 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
Python requests模块cookie实例解析
2020/04/14 Python
python 6行代码制作月历生成器
2020/09/18 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
英国蜡烛、蜡烛配件和家居香氛购买网站:Yankee Candle
2018/12/12 全球购物
幼儿园招生广告
2014/03/19 职场文书
2016三八妇女节校园广播稿
2015/12/17 职场文书