HTML5 canvas 实现同步时钟

都说HTML5CSS3将会是前端工作者要学习和掌握的必要技术。不错,随着各大主流浏览器之间的“互坑”性兼容问题原来越少。作为前端开发人员,趁早提前熟悉掌握此两种必要知识是很有必要的!嘎嘎。

在此,小码哥讲给大家分享一下用HTML5中的canvas画布制作的同步时钟。(透露一下,此种代码并非小码哥亲自编写,知识俺将每一步解析了一下,,供大家参考哈,,惭愧,俺也在进步学习中呢!!)因此,说是原创,只是因为是偶加工了一下,发到博客上了,,别BS偶哦,,,,

canvas据说在HTML5中是非常强大的一种实用标签,用熟练了,在很多地方多能够起到很大的作用的,可以实现各种图。如果大家把下面的代码及其中所用到的与canvas有关的方法研究透了,我想,想画什么图还不是手到擒来嘛,,

下面直接上代码了,不费话了,还是“路遥知‘’力”呢:(建议大家copy代码到编辑器再看,到时可以预览哦):

<!doctype html>

<html>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<head>

<SCRIPT LANGUAGE=‘JavaScript‘>

<!--

//屏蔽js错误

function ResumeError() {

return true;

}

window.onerror = ResumeError;

// -->

</SCRIPT>

</head>

<body>

<h2>canvas 挂钟</h2>

<canvas id="clock" width="500" height="500">

你的破

<!--[if lte IE 10]>

IE

<![endif]-->

<!--[if lte IE 9]><![endif]-->

浏览器不支持canvas标签,无法看到我们的激情小图片

</canvas>

<script>

var clock=document.getElementById(‘clock‘);

var cxt=clock.getContext(‘2d‘);//html5中canvas获取2d画布,为当前在canvas中固定格式,getContext()方法返回一个用于在画布上绘图的环境。

var now1 = new Date();  //获取系统当前时间日期

//alert(now1);

//表的配色

//var bp = ‘#FFFFFF‘;//表盘

var bk = ‘#ff9900‘;//表框

var sk = ‘#0066CC‘;//时刻度

var fk = ‘#0066CC‘;//分刻度

var sz = ‘#333399‘;//时针

var fz = ‘#333399‘;//分针

var mz = ‘#CCCC00‘;//秒针

var mh = ‘#FF0033‘;//秒针后小圆点

var mq = ‘#FF0033‘;//秒针前小圆点

function drawClock(){

//清除画布

cxt.clearRect(0,0,500,500);

var now =new Date();

var msec = now.getMilliseconds();//获取毫秒

var sec=now.getSeconds();//获取秒

var min=now.getMinutes();//获取分

var hour=now.getHours();//获取小时

//小时必须获取浮点类型(小时+分数转化成的小时)

hour=hour+min/60;  //比如当前时刻为11:40,其中的40分钟应该写成0.67小时

//问题 19:23:30

//将24小时进制转换为12小时

hour=hour>12?hour-12:hour;

//表盘(蓝色)

//设置渐变色

var bbp = cxt.createRadialGradient(250,250,0,250,250,250); //创建一个放射颜色渐变,在此处应该是以圆心为中心向四周放射渐变。

bbp.addColorStop(0.4,‘#fff‘);//第一个参数代表“渐变度”,即渐变颜色的均匀值,一般都是从0~1的。

bbp.addColorStop(1,‘#ffcc00‘);  //该行和上一行是一个组合,即从一个颜色渐变到另一个颜色,比如从黑色渐变到白色,他们分别对应的颜色应该是#000--#fff;

cxt.lineWidth=12;//钟表外部圆框的宽度12px;

cxt.strokeStyle=bk;

cxt.fillStyle = bbp;//用设定好的渐变颜色进行填充

cxt.beginPath();

cxt.arc(250,250,200,0,360,false);//此句是画外面的圆框的,,,,可以查看arc()方法!

cxt.closePath();//beginPath() 丢弃任何当前定义的路径并且开始一条新的路径。它把当前的点设置为 (0,0)。

cxt.stroke();//stroke() 方法会实际地绘制出通过 moveTo() 和 lineTo() 方法定义的路径。默认颜色是黑色。 也可以认为是对上面方法操作的执行的方法

cxt.fill();//fill() 方法填充当前的图像(路径)。默认颜色是黑色。

//刻度

//时刻度

for(var i=0;i<12;i++){

cxt.save();

//设置时针的粗细

cxt.lineWidth=7;

//设置时针的颜色

cxt.strokeStyle=sk;

//先设置0,0点

cxt.translate(250,250);

//再设置旋转角度

cxt.rotate(i*30*Math.PI/180);//角度*Math.PI/180=弧度

cxt.beginPath();

cxt.moveTo(0,-170);

cxt.lineTo(0,-190);//这两个moveTo()和lineTo()方法分别是控制划线的长宽的

cxt.closePath();

cxt.stroke();

cxt.restore();

}

//分刻度

for(var i=0;i<60;i++){

cxt.save();

//设置分刻度的粗细

cxt.lineWidth=5;

//设置颜色(使用时刻度的颜色)

cxt.strokeStyle=fk;

//设置或者重置画布的0,0点

cxt.translate(250,250);

//设置旋转角度

cxt.rotate(i*6*Math.PI/180);

//画分针刻度

cxt.beginPath();

cxt.moveTo(0,-180);

cxt.lineTo(0,-190);

cxt.closePath();

cxt.stroke();

cxt.restore();

}

//时针

cxt.save();

//设置时针风格

cxt.lineWidth=7;

//设置时针的颜色

cxt.strokeStyle=sz;

//设置异次元空间的0,0点

cxt.translate(250,250);

//设置旋转角度

cxt.rotate(hour*30*Math.PI/180);

cxt.beginPath();

cxt.moveTo(0,-110);

cxt.lineTo(0,10);

cxt.closePath();

cxt.stroke();

cxt.restore();

//分针

cxt.save();

//设置分针的风格

cxt.lineWidth=5;

cxt.strokeStyle=fz;

//设置异次元空间分针画布的圆心

cxt.translate(250,250);

//设置旋转角度

cxt.rotate(min*6*Math.PI/180);

cxt.beginPath();

cxt.moveTo(0,-140);

cxt.lineTo(0,15);

cxt.closePath();

cxt.stroke();

cxt.restore();

//秒针

cxt.save();

//设置秒针的风格

//颜色红色

cxt.strokeStyle=mz;

//粗细 3像素

cxt.lineWidth=3;

//重置0,0点

cxt.translate(250,250);

//设置旋转角度

//cxt.rotate(sec + msec*0.006*Math.PI/180);

cxt.rotate((sec+msec/1000)*6*Math.PI/180);

//画图

cxt.beginPath();

cxt.moveTo(0,-170);

cxt.lineTo(0,20);

cxt.closePath();

cxt.stroke();

//画出时针、分针、秒针的交叉点、

cxt.beginPath();

cxt.arc(0,0,5,0,360,false);

cxt.closePath();

//设置填充样式

cxt.fillStyle=mh;

cxt.fill();

//设置笔触样式(秒针已设置)

cxt.stroke();

//设置秒针前段的小圆点

cxt.beginPath();

cxt.arc(0,-150,5,0,360,false);

cxt.closePath();

//设置填充样式

cxt.fillStyle=mq;

cxt.fill();

//设置笔触样式(秒针已设置)

cxt.stroke();

cxt.restore();

}

//使用setInterval(代码,毫秒时间)  让时钟动起来

drawClock();

setInterval(drawClock,50);

</script>

</body>

</html>

配图:

希望对大家有帮助哦,,,,转载请注明出处哦,谢谢啦!

时间: 2024-07-31 05:26:42

HTML5 canvas 实现同步时钟的相关文章

html5 canvas 详细使用教程

导航 前言 基本知识 绘制矩形 清除矩形区域 圆弧 路径 绘制线段 绘制贝塞尔曲线 线性渐变 径向渐变(发散) 图形变形(平移.旋转.缩放) 矩阵变换(图形变形的机制) 图形组合 给图形绘制阴影 绘制图像(图片平铺.裁剪.像素处理[不只图像.包括其他绘制图形]) 绘制文字 保存和恢复状态(context) 保存文件 结合setInterval制作动画 结语.demo下载   前言 <canvas></canvas>是html5出现的新标签,像所有的dom对象一样它有自己本身的属性.

html5 Canvas绘制图形入门详解

html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏览器(FireFox.Chrome.Opera.Safari.IE9+)都已经开始支持html5了.除此之外,在移动浏览器市场上,众多的移动浏览器也纷纷展开关于「html5的支持能力以及性能表现」的军备竞赛.html作为革命性的网页技术标准,再加上众多浏览器厂商或组织的鼎力支持,可以想见,html5将会成为未来网页技术的领头羊. ht

html5 canvas首屏自适应背景动画循环效果代码

模板描述:html5 canvas首屏自适应背景动画循环效果代码 由于动态图太大,怕以后服务器受不了,所以现在都改为静态图了,大家点击演示地址一样的,希望大家喜欢,你们的支持就是小海的动力!! 欢迎大家积极评论,给出宝贵意见 下 载 演示地址 本文地址:html5 canvas首屏自适应背景动画循环效果代码

前端-HTML5 canvas学习

canvas元素算是HTML5添加的最受欢迎的功能了.它是通过在页面中设定一个区域,然后用脚本来编辑图形. 可像下面这样来引入一个canvas图像 <canvas id="myCanvas"></canvas> <script type="text/javascript"> var canvas = document.getElementById('myCanvas'); var cxt = canvas.getContext('

html5 canvas文本处理

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

如何使用 HTML5 Canvas 制作水波纹效果

原文:如何使用 HTML5 Canvas 制作水波纹效果 今天,我们继续分享 JavaScript 实现的效果例子,这篇文章会介绍使用 JavaScript 实现水波纹效果.水波效果以图片为背景,点击图片任意位置都会触发.有时候,我们使用普通的 Javascript 就可以创建一个很有趣的解决功能. 在线演示      源码下载 Step 1. HTML 和以前一样,首先是 HTML 代码: <!DOCTYPE html> <html> <head> <meta

HTML5 画布上的 Three.js 环境灯光(HTML5 Canvas Three.js Ambient Lighting)

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. HTML5 画布上的 Three.js 环境灯光HTML5 Canvas Three.js Ambient Lighting <!DOCTY

html5 canvas 学习笔记(一)

一.canvas元素API canvas元素并未提供很多API,实际上他只提供了两个属性与三个方法: 1.canvas元素属性 width 属性:与 height 属性: canvas元素绘图表面的宽度,在默认状况下,浏览器会将canvas元素大小设定成与绘图表面大小一致,然而如果在css中覆写了元素大小,那么浏览器则会将绘图表面进行缩放,使之符合元素尺寸.其值为非负整数,默认值为300. 2.canvas元素方法 getContext()方法: 返回与该canvas元素相关的绘图环境对象,每个

HTML5 Canvas ( 扩展context(&#39;2d&#39;) ) CanvasRenderingContext2D.prototype.你的方法名

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas</title> <script type="text/javascript" src="../js/jQuery.js"></script> <style type="text/css">