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. [Flex] ButtonBar系列——皮肤和外观设置

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  2. EasyUI-datagrid-自动合并单元格(转)

    1.目标 1.1表格初始化完成后,已经自动合并好需要合并的行: 1.2当点击字段排序后,重新进行合并: 2.实现 2.1 引入插件 /** * author ____′↘夏悸 * create dat ...

  3. 403 Forbidden

    http://baike.baidu.com/link?url=JJXC_XqJ2d-twe1dhbLUiRgvZU5OfneRURT4LvrtWBqv9Av4J0GPOlwk3KQuRx4Hzu4N ...

  4. 关于WinCE流接口驱动支持10以上的端口号(COM10)

    一般情况下,WinCE流驱动的索引为0~9.应用程序中,通过CreateFile(_T("XXXN:"),…)打开对应的驱动,N也为0~9.这样看来,似乎在WinCE下同名流驱动个 ...

  5. <%%>与<%#%>与<%=%>

    在asp.net中经常出现包含这种形式<%%>的html代码,总的来说包含下面这样几种格式: 一. <%%> 这种格式实际上就是和asp的用法一样的,只是asp中里面是vbsc ...

  6. Shell | grep with n following lines

    'foo' sample.txt ➜ dex-method-counts git:(master) ./dex-method-counts ~/Downloads/n.apk | 'hui' hui: ...

  7. linux中如何查看进程占用了哪些端口?

    使用netstat –apn | grep <进程名>便可以查看指定进程所占用的端口.

  8. SQL必知必会笔记(1)

    去SQL AXDB 中Query数据 Open the SQL > Connect > Select AXDB > new Query select REFID, ITEMID, R ...

  9. php和apache安装心得

    又一次安装apache和php~~ 又一次心碎的体验~ 本想参考之前的apache配置之间进行安装(在windows 下编辑,然后传到linux上),怎耐,一直有问题,打开浏览器直接进行下载.发现是浏 ...

  10. 学习记录 java 哈希

    哈希表(Hash Table,又叫散列表),是存储键值对(Key-value)的表,之所以不叫它Map(键值对一起存储一般叫做Map),是因为它下面的特性:它能把关键码(key)映射到表中的一个位置来 ...