canvas+js时钟特效

运用js+canvas方面的知识完成一个时钟的效果图,再利用for循环实现指针的转动效果:

<!--网页文档的声明-->
<!doctype html>
<html>
<!--网页的头部-->
<head>
<meta charset="UTF-8">
<!--网页三要素-->
<meta name="Keywords" content="关键词">
<meta name="Description" content="关键词描述">
<title>时钟效果</title>
<!--CSS层叠样式表 加工 修饰-->
<style type="text/css">
*{margin:0;padding:0;}
body{background:url("img/2.jpg");}
#canvas{margin:100px auto;display:block;}
</style>
</head>
<!--网页的主体-->
<body>
<canvas id="canvas" width="500" height="500">
你的浏览器需要更新了更新请前往 www.xxx.com*——*
</canvas>
<script type="text/javascript">
var canvas = document.getElementById('canvas');//获取上下文
var cxt = canvas.getContext('2d');//绘图轨迹 线 圆 矩形..
/*圆
cxt.beginPath();//开始
//cxt.fillStyle = "#006633";填充颜色
cxt.strokeStyle = "#ff00ff";
cxt.arc(250,250,200,0,360,false);//画圆方法
//cxt.fill();填充
cxt.stroke();
cxt.closePath();//结束
*/
clock()
function clock(){
cxt.clearRect(0,0,500,500)
var now = new Date();
var sec = now.getSeconds();
var min = now.getMinutes();
var hour = now.getHours();
hour = hour + min/60;
hours = hour>12?hour-12:hour;
//表盘
cxt.beginPath();
cxt.lineWidth =10;//线宽
cxt.strokeStyle = "#00ccff";
cxt.arc(250,250,200,0,360,false);
cxt.stroke();
cxt.closePath();
//分秒刻度 60个
for (var i=0;i<60 ;i++ )
{
cxt.save();
cxt.translate(250,250);
cxt.rotate(6*i*Math.PI/180);
cxt.lineWidth = "7";
cxt.strokeStyle ="#fff";
cxt.beginPath();
cxt.moveTo(0,-180);
cxt.lineTo(0,-190);
cxt.stroke();
cxt.closePath();
cxt.restore();
}
//时刻度
for (var i =0;i<12 ;i++ )
{
cxt.save();
cxt.translate(250,250);
cxt.rotate(30*i*Math.PI/180);
cxt.lineWidth = "7";
cxt.strokeStyle ="#ff0000";
cxt.beginPath();
cxt.moveTo(0,-175);
cxt.lineTo(0,-195);
cxt.stroke();
cxt.closePath();
cxt.restore();
}
//时针
cxt.save();//保存
cxt.strokeStyle = "yellow"
cxt.translate(250,250);
cxt.rotate(30*hours*Math.PI/180);
cxt.beginPath();
cxt.moveTo(0,-100);
cxt.lineTo(0,20);
cxt.stroke();
cxt.closePath();
cxt.restore();
//分针
cxt.save();//保存
cxt.strokeStyle = "#00ff00";
cxt.lineWidth ="7";
cxt.translate(250,250);
cxt.rotate(6*min*Math.PI/180);
cxt.beginPath();
cxt.moveTo(0,-130);
cxt.lineTo(0,20);
cxt.stroke();
cxt.closePath();
cxt.restore();
//秒针
cxt.save();
cxt.strokeStyle = "red";
cxt.lineWidth ="3";
cxt.translate(250,250);
cxt.rotate(6*sec*Math.PI/180);
cxt.beginPath();
cxt.moveTo(0,-150);
cxt.lineTo(0,20);
cxt.stroke();
cxt.closePath();
cxt.beginPath();
cxt.fillStyle ="gray";
cxt.arc(0,0,5,0,360,false);
cxt.fill();
cxt.beginPath();
cxt.strokeStyle ="red";
cxt.arc(0,0,6,0,360,false);
cxt.stroke();
cxt.beginPath();
cxt.lineWidth ="1";
cxt.strokeStyle ="red";
cxt.moveTo(0,-150);
cxt.lineTo(4,-130);
cxt.stroke();
cxt.beginPath();
cxt.lineWidth ="1";
cxt.strokeStyle ="red";
cxt.moveTo(0,-150);
cxt.lineTo(-4,-130);
cxt.stroke(); cxt.restore();
}
setInterval(clock,1000) //console.log(hour+'时'+min+'分'+sec+'秒')
</script>
</body>
</html>

利用js+canvas实现的时钟效果图的更多相关文章

  1. [JS,Canvas]日历时钟

    [JS,Canvas]日历时钟 Html: <!doctype html> <html> <head> <meta charset="UTF-8&q ...

  2. js+Canvas 利用js 实现浏览器保存图片到本地

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 用canvas绘制一个时钟

    实现一个时钟的绘制和时间的显示 一,首先是页面的搭建html部分以及一点点的css代码,因为css这块用的比较少,所以就没有单独出来: <!DOCTYPE html> <html l ...

  4. canvas做的时钟,学习下

    canvas标签只是图形容器,您必须使用脚本来绘制图形. getContext() 方法可返回一个对象,该对象提供了用于在画布上绘图的方法和属性.——获取上下文对象. getContext(" ...

  5. canvas炫酷时钟

    canvas炫酷时钟 实现的功能 主要用到canvas的一些基础api 直接看效果 html: <canvas id="myCanvas" width="500&q ...

  6. js简单 图片版时钟,带翻转效果

    js简单 图片版时钟,带翻转效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  7. 利用JS脚本通过getAttribute()和setAttribute()等对CSS样式进行操作

    HTML中引入CSS样式的方式有三种: 1.最常用的,引入样式表,在样式表中编写样式,引入方式如下:<link href="css/style.css" rel=" ...

  8. JS 数据类型转换-转换函数、强制类型转换、利用js变量弱类型转换

    1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行:对其他类型 ...

  9. 利用js制作html table分页示例(js实现分页)

    有时候table的列数太长,不利于使用者查询,所以利用JS做了一个table的分页,以下为相关代码 一.JS代码 <script type="text/javascript" ...

随机推荐

  1. 基于spring-redis发布订阅模式的实现

    redis配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...

  2. POJ 1611

    菜鸟第一次做这种.想了好一会儿.== 首先还是初始化记忆数组,使得每一个元素的初始根节点是自己. 然后是对输入的数据进行并集.我们拿出每组元素的第一个作为根节点. 每次检测是否已经存在根节点.如果存在 ...

  3. 移植samba到ios平台,最新支持ios8.3

    移植samba到ios平台,最新支持ios8.3 下载https://github.com/kolyvan/kxsmb 开源项目 1  cd samba-4.1.14 2  vi Rakefile 修 ...

  4. 剑指Offer:面试题7——用两个栈实现队列(java实现)

    题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 首先定义两个栈 Stack<Integer> stack1 = new Stack<I ...

  5. A+B问题通解_Pascal_C++_Java

    世界不断发展,各种电子设备不断变得更加迷你,代码却越写越长…… A+B Problem Input:Two integer A,B Output:The ans of A+B 1971年,Niklau ...

  6. mistral 工作流组件之二 思维导图

    Mistral 思维导图

  7. mysql显示乱码问题

    在select * from table:时往往会出现上图所示乱码现象 此时,输入status,会发现: 此时只要SET NAMES utf8即可解决该问题.此时,再次输入status:   总结:S ...

  8. Android基础总结(4)——广播接收器

    在Android中的每个应用程序可以对自己感兴趣的广播进行注册,这样该程序就只会接收自己所关心的广播内容,这些广播可能来自于系统的,也可能来自于其他应用程序的.Android提供了一整套完整的API, ...

  9. windows对象分类

    用户对象 GDI对象 内核对象 如何判断一个对象是不是内核对象 看创建函数,几乎所有的内核对象创建函数都会有PSECURITY_ATTRIBUTES参数

  10. 【EF 5】结合项目实战分析EF三大工作模式之—Database First

    导读:所谓的EF的Databasefirst工作模式,是目前我们(不涉及社会领域)用的最广的一种模式,也是本次ITOO开发所采用的工作模式.本篇博客,就分析在项目中通过Database First模式 ...