利用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 Tips(4) 一些关于提高JQuery性能的Tips
Dec 19 Javascript
jQuery1.6 使用方法一
Nov 23 Javascript
图片翻转效果具体实现代码
Jan 09 Javascript
JS实现FLASH幻灯片图片切换效果的方法
Mar 04 Javascript
谈一谈js中的执行环境及作用域
Mar 30 Javascript
JS实现title标题栏文字不间断滚动显示效果
Sep 07 Javascript
Bootstrop实现多级下拉菜单功能
Nov 24 Javascript
Angular1.x复杂指令实例详解
Mar 01 Javascript
Angular中点击li标签实现更改颜色的核心代码
Dec 08 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
在移动端使用vue-router和keep-alive的方法示例
Dec 02 Javascript
vue实现的仿淘宝购物车功能详解
Jan 27 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
基于文本的留言簿
2006/10/09 PHP
用phpmyadmin更改mysql5.0登录密码
2008/03/25 PHP
PHP 基本语法格式
2009/12/15 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
解析php常用image图像函数集
2013/06/24 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
ES2020 已定稿,真实场景案例分析
2020/05/25 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
Python发送form-data请求及拼接form-data内容的方法
2016/03/05 Python
python字符串,数值计算
2016/10/05 Python
Python zip()函数用法实例分析
2018/03/17 Python
django表单的Widgets使用详解
2019/07/22 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
《长城》教学反思
2014/02/14 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
服务行业标语口号
2015/12/26 职场文书
如何写好活动总结
2019/06/21 职场文书
vue ref如何获取子组件属性值
2022/03/31 Vue.js
Jmerte 分布式压测及分布式压测配置
2022/04/30 Java/Android