利用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 相关文章推荐
JsDom 编程小结
Aug 09 Javascript
JS去除右边逗号的简单方法
Jul 03 Javascript
JavaScript操作cookie类实例
Mar 31 Javascript
JS组件Bootstrap实现图片轮播效果
May 16 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
Jun 12 Javascript
jquery常用的12个小功能
Jul 22 Javascript
jquery实现文本框的禁用和启用
Dec 07 Javascript
webpack+react+antd脚手架优化的方法
Apr 02 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
Jul 24 Javascript
bootstrap模态框关闭后清除模态框的数据方法
Aug 10 Javascript
JavaScript基于用户照片姓名生成海报
May 29 Javascript
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
Jun 15 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
Form表单按回车自动提交表单的实现方法
2016/11/18 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
微信小程序如何获取地址
2019/12/24 Javascript
JS数组方法push()、pop()用法实例分析
2020/01/18 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
python实现的正则表达式功能入门教程【经典】
2017/06/05 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
使用PYTHON解析Wireshark的PCAP文件方法
2019/07/23 Python
PageFactory设计模式基于python实现
2020/04/14 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
J2EE相关知识面试题
2013/08/26 面试题
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
小学学校评估方案
2014/06/08 职场文书
机关作风建设心得体会
2014/10/22 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
大学生学年个人总结
2015/02/15 职场文书
英文自荐信范文
2015/03/25 职场文书
初中班主任工作随笔
2015/08/15 职场文书
初中英语教学随笔
2015/08/15 职场文书
2016年大学校运会广播稿件
2015/12/21 职场文书
Python合并多张图片成PDF
2021/06/09 Python