Canvas 时间效果:

function clockTest() {
var canvas = document.getElementById('canvas');
if (!(canvas && canvas.getContext)) {
return;
}
var ct = canvas.getContext('2d');
var w = canvas.width = 500;
var h = canvas.height = 300;
var r1 = 95;
var c3 = ct.createLinearGradient(0, 0, 0, h); c3.addColorStop(0, '#FFF');
c3.addColorStop(0.2, '#dad9e0');
c3.addColorStop(0.4, '#adb0b6');
c3.addColorStop(0.6, '#8f8f99');
c3.addColorStop(0.8, '#86878b');
c3.addColorStop(1, '#88898e'); var c4 = ct.createRadialGradient(w / 2, h / 2, w, w, w, w);
c4.addColorStop(0, 'rgba(0,0,0,1)');
c4.addColorStop(0.2, 'rgba(0,0,0,0.8)');
c4.addColorStop(0.3, 'rgba(0,0,0,0)');
c4.addColorStop(0, 'rgba(0,0,0,0)'); function clock() {
var d = new Date();
var dH = d.getHours();
var dM = d.getMinutes();
var dS = d.getSeconds();
//return;
ct.clearRect(0, 0, w, h);
ct.save();
ct.beginPath();
ct.strokeStyle = 'rgba(0,0,0,0.1)';
ct.fillStyle = c3;
ct.arc(w / 2, h / 2, 135, 0, Math.PI * 2, true);
ct.closePath();
ct.fill();
ct.stroke();
ct.restore(); ct.save();
ct.beginPath();
ct.strokeStyle = 'rgba(0,0,0,0.1)';
ct.fillStyle = '#E2E9F1';
ct.arc(w / 2, h / 2, 120, 0, Math.PI * 2, true);
ct.closePath();
ct.fill();
ct.stroke();
ct.restore(); for (var i = 0; i < 60; i++) {
ct.save();
ct.lineCap = 'square';
ct.beginPath();
if (i % 5 === 0) {
ct.lineWidth = 5;
ct.strokeStyle = '#333';
} else {
ct.lineWidth = 2;
ct.strokeStyle = '#333';
}
ct.translate(w / 2, h / 2);
ct.rotate(i * 6 * Math.PI / 180);
ct.moveTo(0, -120);
if (i % 5 === 0) {
ct.lineTo(0, -105);
} else {
ct.lineTo(0, -110);
}
ct.closePath();
ct.stroke();
ct.restore();
} ct.save();
ct.translate(w / 2, h / 2);
ct.fillColor = '#369';
ct.textAlign = 'center';
ct.textBaseline = 'middle';
ct.font = '25px times new roman';
ct.fillText(12, 0, -r1);
ct.fillText(3, r1, -0);
ct.fillText(6, 0, r1);
ct.fillText(9, -r1, -0);
ct.fillStyle = '#333';
ct.font = '16px verdara';
ct.fillText('KINGWELL', 0, 50);
ct.restore(); ct.save();
ct.beginPath();
ct.translate(w / 2, h / 2);
ct.rotate((dH + dM / 60) * 30 * Math.PI / 180);
ct.lineWidth = 10;
ct.strokeStyle = '#222';
ct.moveTo(0, 15);
ct.lineTo(0, -70);
ct.closePath();
ct.stroke();
ct.restore(); ct.save();
ct.beginPath();
ct.translate(w / 2, h / 2);
ct.rotate((dM + dS / 60) * 6 * Math.PI / 180);
ct.lineWidth = 6;
ct.strokeStyle = '#333';
ct.moveTo(0, 20);
ct.lineTo(0, -90);
ct.closePath();
ct.stroke();
ct.restore(); ct.save();
ct.beginPath();
ct.translate(w / 2, h / 2);
ct.rotate(dS * 6 * Math.PI / 180);
ct.lineWidth = 2;
ct.strokeStyle = '#C00';
ct.moveTo(0, 25);
ct.lineTo(0, -100);
ct.closePath();
ct.stroke();
ct.restore(); ct.save();
ct.beginPath();
ct.translate(w / 2, h / 2);
ct.arc(0, 0, 6, 0, Math.PI * 2, true);
ct.fillStyle = '#C00';
ct.closePath();
ct.fill();
ct.restore();
setTimeout(clock, 1000);
}
clock();
}
clockTest();

HTML5 Canvas时间效果的更多相关文章

  1. HTML5 Canvas动画效果演示

    HTML5 Canvas动画效果演示 主要思想: 首先要准备一张有连续帧的图片,然后利用HTML5 Canvas的draw方法在不同的时间 间隔绘制不同的帧,这样看起来就像动画在播放. 关键技术点: ...

  2. HTML5 Canvas动画效果实现原理

    在线演示 使用HTML5画布可以帮助我们高速实现简单的动画效果.基本原理例如以下: 每隔一定时间绘制图形而且清除图形,用来模拟出一个动画过程,能够使用context.clearRect(0, 0, x ...

  3. HTML5 Canvas动画效果演示 - 流浪的鱼 - 博客频道 - CSDN.NET

    HTML5 Canvas动画效果演示 - 流浪的鱼 - 博客频道 - CSDN.NET HTML5 Canvas动画效果演示

  4. 7个惊艳的HTML5 Canvas动画效果及源码

    HTML5非常强大,尤其是现在大部分浏览器都支持HTML5和CSS3,用HTML5制作的动画也多了起来.另外,Canvas上绘制图形非常简单,本文就分享了一些强大的HTML5 Cnavas动画,一起来 ...

  5. 基于HTML5 Canvas粒子效果文字动画特效

    之前我们分享过很多超酷的文字特效,其中也有利用HTML5和CSS3的.今天我们要来分享一款基于HTML5 Canvas的文字特效,输入框中输入想要展示的文字,回车后即可在canvas上绘制出粒子效果的 ...

  6. HTML5 canvas流体力学效果

    某人用Java搞了一个流体力学的演示:http://grantkot.com/MPM/Liquid.html. 下面是 HTML 5版的流体力学演示(推荐使用Chrome浏览器浏览): 效果演示 &l ...

  7. HTML5 Canvas 超炫酷烟花绽放动画教程

    这是一个很酷的HTML5 Canvas动画,它将模拟的是我们现实生活中烟花绽放的动画特效,效果非常逼真,但是毕竟是电脑模拟,带女朋友看就算了,效果还是差了点,呵呵.这个HTML5 Canvas动画有一 ...

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

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

  9. HTML5 Canvas 实现的9个 Loading 效果

    Sonic.js 是一个很小的 JavaScript 类,用于创建基于 HTML5 画布的加载图像.更强大的是 Sonic.js 还提供了基于现成的例子的创建工具,可以帮助你实现更多自定义的(Load ...

随机推荐

  1. 如何实时获取DBGrid 中当前单元格输入的内容?

    如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理, 用什么事件呢? 所以Field的Onchange事件是没用的. 这个问题简单啊,每输入1 ...

  2. WPF实例,以getFiles()获取文件夹,treeview的应用

    读取电脑硬盘根目录添加到TreeView控件 foreach (DriveInfo item in System.IO.DriveInfo.GetDrives()) { if(item.ToStrin ...

  3. java read读取方法 之 指定读取大小,根据返回值判断是否读取所有的内容 -1表示读取完毕

    当读取的内容小于指定的长度时候 字符数组里面会出现一部分字符是上一次遗留下来的情况

  4. bzoj3502[PA2012]Tanie Linie(最大k区间和)

    题意:给定一个长为n的数列,要求选出最多k个不相交的区间(可以不选),使得选中的数字之和最大.(1<=k<=n<=1000000)分析:首先我们通过预处理对问题做一些简化.原序列中的 ...

  5. Go语言【第十一篇】:Go数据结构之:结构体

    Go语言结构体 Go语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型,结构体是由一系列具有相同类型或不同类型数据构成的集合.结构体表示一项记录,比如:保存图书馆的书籍记 ...

  6. CSS3 过渡效果触发时机的问题

    像360deg过渡效果,做专题的同学应该是经常做的. <!DOCTYPE html> <html lang="en"> <head> <m ...

  7. lalala

    <script type="text/javascript"> var a_idx = 0; var b_idx = 0; var a = new Array(&quo ...

  8. POJ3261:Milk Patterns——题解

    http://poj.org/problem?id=3261 给一个序列,求至少出现 k 次的最长重复子串,这 k 个子串可以重叠. 论文题+傻逼题. 上一道题(POJ1743)会做即可. 还是二分长 ...

  9. 洛谷 P3620 [APIO/CTSC 2007]数据备份 解题报告

    P3620 [APIO/CTSC 2007]数据备份 题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同 ...

  10. Chrome浏览器的使用技巧

    查询Chrome浏览器自身的DNS缓存 在浏览器的地址栏输入:chrome://net-internals/#dns 在左侧的菜单栏,点击对应菜单可以查看对应选项的相关内容. 在Chrome浏览器中输 ...