canvas+js实现时钟效果图
<! DOCTYPE html>
<html>
<head>
<title>Clock</title>
</head>
<style>
canvas{
border:1px solid red;
}
</style>
<body onload="move();">
<canvas width=500 height=400 id="c">浏览器暂不支持该功能</canvas>
</body>
<script>
//画表盘的函数
function drawcycle(){
var cxt=document.getElementById("c").getContext("2d");
//画圆盘
cxt.fillStyle='gray';
cxt.beginPath();
cxt.arc(250,200,120,0,Math.PI*2,false);
cxt.closePath();
cxt.fill();
//画指针心
cxt.fillStyle='black';
cxt.beginPath();
cxt.arc(250,200,5,0,Math.PI*2,false);
cxt.closePath();
cxt.fill();
//画刻度
cxt.fillStyle='black';
cxt.beginPath()
cxt.fillRect(248,81,4,10);
cxt.fillRect(360,198,10,4);
cxt.fillRect(248,310,4,10);
cxt.fillRect(130,198,10,4);
cxt.closePath();
//画线条观测刻度位置是否端正
cxt.moveTo(250,80);
cxt.lineTo(250,320);
cxt.moveTo(130,200);
cxt.lineTo(370,200);
cxt.stroke();*/
}
//变量alphe代表秒针初始状态所在位置角度
var alphe=Math.PI/2;
//变量bata代表分针初始状态所在位置角度
var bata=Math.PI/2;
//变量gama代表时针初始状态所在角度
var gama=Math.PI/2;
//秒针,分针,时针长度定义
var second_len=105;
var minite_len=75;
var hour_len=55;
//画针的函数
function drawpaint(){
//画布的宽高
var width=500;
var height=400;
//秒针初始位置
var second_start_width=250;
var second_start_height=95;
//分针初始化
var minite_start_width=0;
var minite_start_height=0;
//时针初始化
var hour_start_width=0;
var hour_start_height=0;
var cxt=document.getElementById("c").getContext("2d");
cxt.clearRect(0,0,width,height);
drawcycle();
cxt.fillStyle='black';
//画秒针
cxt.moveTo(250,200);
var del=Math.PI/30;
alphe=alphe-del;
second_start_width +=second_len*Math.cos(alphe);
second_start_height =200-second_len*Math.sin(alphe);
cxt.lineTo(second_start_width,second_start_height);
cxt.stroke();
//画分针
cxt.moveTo(250,200);
//分针一秒转过的角度
var del_min=Math.PI/1800;
bata=bata-del_min;
minite_start_width =250+minite_len*Math.cos(bata);
minite_start_height =200-minite_len*Math.sin(bata);
cxt.lineTo(minite_start_width,minite_start_height);
cxt.stroke();
//cxt.fillRect(248,110,4,90);
//画时针
cxt.moveTo(250,200);
//时针一秒转过的角度
var del_hou=Math.PI/108000;
gama=gama-del_hou;
hour_start_width =250+hour_len*Math.cos(gama);
hour_start_height =200-hour_len*Math.sin(gama);
cxt.lineTo(hour_start_width,hour_start_height);
cxt.stroke();
//cxt.fillRect(247,130,6,70);*/
}
function move(){
setInterval('drawpaint()',1000);
}
</script>
</html>
- 实现思路:首先要有绘图的画布,既要用到canvas画布,其次要绘出表盘的图案,最后要画出针的位置,这里注意到不管是时针还是分针亦或是秒针,他们的圆心始终是重叠的,唯一要关注的就是画线的终点坐标,这里就要有一定的几何图案的分析能力。
- 运行效果:

canvas+js实现时钟效果图的更多相关文章
- 利用js+canvas实现的时钟效果图
canvas+js时钟特效 运用js+canvas方面的知识完成一个时钟的效果图,再利用for循环实现指针的转动效果: <!--网页文档的声明--> <!doctype html&g ...
- html5 canvas js(数字时钟)
<!doctype html> <html> <head> <title>canvas dClock</title> </head ...
- [ZZ+CH] Html5 canvas+js 时钟
总之新Blog入驻以后,又开始老习惯,到处折腾自定义的空间,放些东西. 想起以前大一的时候做过一个Javascript的时间显示器,现在想做一个时钟,当然现在老奸巨猾,会先去看一看有前辈写过没. 前辈 ...
- JS + HTml 时钟代码实现
JS+ Html 画布实现的时钟效果图: 闲来无聊做了一个网页的时钟,效果模拟传统时钟的运行方式, 运用了html 的画布实现指针,背景图片引用了网络图片. 具体原理: 首先将时钟分为四个不同区域,对 ...
- canvas画的时钟
结合几天来学习的canvas的API,终于完成了一个时钟呵呵 html <!doctype html> <html> <head> <meta charset ...
- canvas炫酷时钟
canvas炫酷时钟 实现的功能 主要用到canvas的一些基础api 直接看效果 html: <canvas id="myCanvas" width="500&q ...
- js 动态时钟
js 动态时钟 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- canvas.js | CLiPS
canvas.js | CLiPS canvas.js The canvas.js module is a simple and robust JavaScript API for the HTML5 ...
- 深夜,用canvas画一个时钟
深夜,用canvas画一个时钟 查看demo 这几天准备阿里巴巴的笔试,可以说已经是心力交瘁,自从阿里和蘑菇街的内推被刷掉之后,开始越来越怀疑起自己的能力来,虽然这点打击应该是微不足道的.毕竟校招在刚 ...
随机推荐
- 代码空间项目 -- cookie的基本使用
cookie在日常开发b/s架构时候经常使用,可以在记住用户,方便自动登录,也可以记住用户的偏好并对应推送广告 下面说说开发时候的基本用法: 1.创建cookie//设置cookie,键值对形式Coo ...
- Safair 浏览器cllick事件不生效或者需要双击才生效
针对Safair 浏览器cllick事件不生效或者需要双击才生效的解决方案. 方法一:给元素加上cursor: pointer样式.(不生效) 方法二:ios事件机制不一样,将click事件改为mou ...
- vue程序中组件间的传值方式
vue程序在组件中进行传值有多种方式,这里记录我在项目中使用到的三种: 1. 父组件向子组件传值 2. 子组件向父组件传值 3. 通过路由传参 父组件通过props向子组件传值 在子组件script中 ...
- animation steps属性实现帧动画
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...
- 专网IP和公网IP的区别是什么
专网ip是自己网内用,公网的话就全球有效 最大区别是公网IP世界只有一个,私网IP可以重复,但是在一个局域网内不能重复 访问互联网是需要IP地址的,IP地址又分为公网IP和私网IP,访问互联网需要公网 ...
- BestCoder10 1001 Revenge of Fibonacci(hdu 5018) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5018 题目意思:给出在 new Fibonacci 中最先的两个数 A 和 B(也就是f[1] = A ...
- bzoj1013高斯消元
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1013 似乎是很明显的高斯消元: 第一次写高斯消元. 代码如下: #include<io ...
- poj1236学校网络——连通块
题目:http://poj.org/problem?id=1236 通过传输文件的特点可以看出要先求强联通分量,缩点: 问题1:即缩点后入度为0的点,从它们开始传文件可以传给所有学校: 问题2:对于所 ...
- hibernate学习三 精解Hibernate之核心文件
一 hibernate.cfg.xml详解 1 JDBC连接: 2 配置C3P0连接池: 3 配置JNDI数据源: 4 可选的配置属性: 5 hibernate二级缓存属性 6 hibernate事务 ...
- 我所理解的Restful API最佳实践
一直在公司负责API数据接口的开发,期间也遇到了不小的坑,本篇博客算是做一个小小的记录. 1. 不要纠结于无意义的规范 在开始本文之前,我想先说这么一句:RESTful 真的很好,但它只是一种软 ...