利用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实现一个页面多个css样式实现
May 29 Javascript
JS实现切换标签页效果实例代码
Nov 01 Javascript
jQuery制作简单柱状图实例
Jan 28 Javascript
javascript实现带下拉子菜单的导航菜单效果
May 14 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
JavaScript中闭包的写法和作用详解
Jun 29 Javascript
深入理解jQuery3.0的domManip函数
Sep 01 Javascript
react-native使用react-navigation进行页面跳转导航的示例
Sep 07 Javascript
Angular之jwt令牌身份验证的实现
Feb 14 Javascript
js实现直播点击飘心效果
Aug 19 Javascript
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
如何vue使用el-table遍历循环表头和表体数据
Apr 26 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
提问的智慧(2)
2006/10/09 PHP
同时提取多条新闻中的文本一例
2006/10/09 PHP
php下载远程文件类(支持断点续传)
2008/11/14 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
List the Codec Files on a Computer
2007/06/11 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
使用DNode实现php和nodejs之间通信的简单实例
2015/07/06 NodeJs
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
讲解vue-router之什么是编程式路由
2018/05/28 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
Python 字符串换行的多种方式
2018/09/06 Python
Python基础教程之if判断,while循环,循环嵌套
2019/04/25 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
幼儿园数学教学反思
2014/02/02 职场文书
学生自我评价范文
2014/02/02 职场文书
岗位职责说明书模板
2014/07/30 职场文书
运动会演讲稿200字
2014/08/25 职场文书
公司开会通知
2015/04/20 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
百年孤独读书笔记
2015/06/29 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书