Canvas画布实现自定义时钟效果

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>标题</title>
<meta name="keywords" content="">
<meta name="description" content="">
<style>
	*{margin:0; padding:0; list-style:none;}
	.box{
		width: 420px;
		height: 420px;
		margin: 50px auto 0;
	}
	#cvs{
		background: #B1A6BE;
	}
</style>
</head>
<body>

	<div class="box">
		<canvas id="cvs" width="420" height="420"></canvas>
	</div>

<script>
var cvs=document.getElementById(‘cvs‘);
var ctx=cvs.getContext(‘2d‘);
clock();
setInterval(clock,1000);
function clock(){
	var img=document.createElement(‘img‘);
	img.src=‘01.jpg‘;
	//时钟背景图
	// img.onload=function (){
		ctx.beginPath();
		ctx.drawImage(img,0,0,420,420);
		ctx.closePath();
	// }
	//时钟外圆
	ctx.beginPath();
	ctx.arc(210,210,200,0,2*Math.PI,true);
	ctx.strokeStyle=‘#60D9F8‘;
	ctx.lineWidth=10;
	ctx.stroke();
	ctx.clip();
	ctx.closePath();

	//分刻度 360/60=6
	for (var i = 0; i < 60; i++) {
		ctx.save();//保存状态
		ctx.beginPath();
		ctx.translate(210,210);
		ctx.rotate(i*6*Math.PI/180);
		ctx.strokeStyle=‘#FEF319‘;
		ctx.lineWidth=5;
		ctx.moveTo(0,-185);
		ctx.lineTo(0,-195);
		ctx.stroke();
		ctx.closePath();
		ctx.restore();//恢复之前保存的状态
	};

	//时刻度 360/12=30
	for (var i = 0; i < 12; i++) {
		ctx.save();//保存状态
		ctx.beginPath();
		ctx.translate(210,210);
		ctx.rotate(i*30*Math.PI/180);
		ctx.strokeStyle=‘#60D9F8‘;
		ctx.lineWidth=8;
		ctx.moveTo(0,-175);
		ctx.lineTo(0,-195);
		ctx.stroke();
		ctx.closePath();
		ctx.restore();//恢复之前保存的状态
	};

	//获取当前时间
	var dates=new Date();
	var h=dates.getHours();
	var m=dates.getMinutes();
	var s=dates.getSeconds();
	h=h+m/60;//12.5小时
	m=m+s/60;

	//画时间
	var h2=dates.getHours();
	var m2=dates.getMinutes();
	var str1=h2>9?h2:‘0‘+h2;
	var str2=m2>9?m2:‘0‘+m2;
	var str=str1+‘:‘+str2;// 09:05
	ctx.beginPath();
	ctx.font=‘26px 微软雅黑‘;
	ctx.fillStyle=‘#5BDA40‘;
	ctx.fillText(str,180,340);
	ctx.closePath();

	//时针
	ctx.save();//保存状态
	ctx.beginPath();
	ctx.translate(210,210);
	ctx.rotate(h*30*Math.PI/180);
	ctx.strokeStyle=‘#60D9F8‘;
	ctx.lineWidth=8;
	ctx.moveTo(0,14);
	ctx.lineTo(0,-130);
	ctx.stroke();
	ctx.closePath();
	ctx.restore();//恢复之前保存的状态

	//分针
	ctx.save();//保存状态
	ctx.beginPath();
	ctx.translate(210,210);
	ctx.rotate(m*6*Math.PI/180);
	ctx.strokeStyle=‘#FEF319‘;
	ctx.lineWidth=5;
	ctx.moveTo(0,14);
	ctx.lineTo(0,-150);
	ctx.stroke();
	ctx.closePath();
	ctx.restore();//恢复之前保存的状态

	//秒针
	ctx.save();//保存状态
	ctx.beginPath();
	ctx.translate(210,210);
	ctx.rotate(s*6*Math.PI/180);
	ctx.strokeStyle=‘#FB1F11‘;
	ctx.lineWidth=3;
	ctx.moveTo(0,14);
	ctx.lineTo(0,-170);
	ctx.stroke();
	ctx.closePath();

	//秒针上的圆
	ctx.beginPath();
	ctx.fillStyle=‘#FEF319‘;
	ctx.strokeStyle=‘#FB1F11‘;
	ctx.lineWidth=3;
	ctx.arc(0,-155,5,0,2*Math.PI,true);
	ctx.fill();
	ctx.stroke();
	ctx.closePath();

	//中心圆
	ctx.beginPath();
	ctx.fillStyle=‘#FEF319‘;
	ctx.strokeStyle=‘#FB1F11‘;
	ctx.lineWidth=3;
	ctx.arc(0,0,8,0,2*Math.PI,true);
	ctx.fill();
	ctx.stroke();
	ctx.closePath();
	ctx.restore();//恢复之前保存的状态

}
</script>
</body>
</html>

  

时间: 2024-08-10 21:30:38

Canvas画布实现自定义时钟效果的相关文章

canvas实现的时钟效果

最近在网上看到了一个css3实现的可爱时钟,觉得很nice,然后就想着用canvas试试实现这个时钟效果. 首先,要实现时钟需要先计算时钟上的数字应该占整个圆的大小. 因为一个圆是360度,所以数字之间就是360/12=30度,所以我在圆上画出数字的代码是这样的: drawNumber:function(){ this.context.save(); for(var i = 0;i < 12; i++){ var angle = i*30; angle = angle*Math.PI/180;

Particles.js基于Canvas画布创建粒子原子颗粒效果

文章目录 使用方法 自定义参数 相关链接 Particles.js是一款基于HTML5 Canvas画布的轻量级粒子动画插件,可以设置粒子的形状.旋转.分布.颜色等属性,还可以动态添加粒子,效果非常炫酷,能和鼠标互动吸附或者是躲避鼠标指针. 使用方法 1.该粒子动画库插件使用方法非常简单,首先要在页面中引入particles.js文件. <script src="js/particles.js"></script> 2.在页面中使用一个div来作为放置粒子的容器

使用canvas实现数字时钟效果

<canvas id="canvas"></canvas> <script> (function(){ var digit= [ [ [0,0,1,1,1,0,0], [0,1,1,0,1,1,0], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [1,1,0,0,0,1,1], [0,1,1,0,1,1,0], [0,0,1,

JavaScript之Canvas画布

canvas可以在页面中设定一个区域,再利用JavaScript动态地绘制图像. 基本用法 使用canvas元素,首先设置width和height属性,为其设置绘制区域的大小,   如果没有设置宽度和高度,是看不到元素的,不能在其区域画图,在开始标签和结束标签之间的信息是后备信息,当用户的浏览器不支持canvas元素时会显示,用于友好地提示用户. <canvas id="canvas" width="400" height="300">

第六章 一张白纸好作画—Canvas画布(1)

第六章 一张白纸好作画-Canvas画布 前面的相关章节,我们详细说明过Android UI组件的使用.通过前面章节的学习,开发者已经可以开发出令人满意的UI效果了.但是有的时候,我们需要实现更加漂亮的UI效果,此时可能就无法直接使用UI组件,而是需要自己画出各种UI效果了. 在Android中,Canvas就是一个画布,开发者可以在画布上绘制想要的任何东西.在本章中,我们将介绍Canvas及相关的技术. 6.1 Canvas画布介绍 6.1.1View Canvas-使用普通View的Canv

canvas简单实现动态时钟

使用到的知识: 1.     获取系统时间 2.     画图形,空心图形,实心图形,以及一些属性 3.     for循环 准备工作:添加一块画布1000*1000(随意),引用canvas.js <!doctype html> <html>  <head>   <meta charset="UTF-8">   <meta name="Generator" content="EditPlus?&quo

利用canvas画一个动态时钟

目标:利用canvas画布画一个动态时钟,根据目前的时间可以实时更新的,可以在过程中添加一些效果,比如让时钟外围的一圈颜色渐变,时钟上的数字颜色改变,时钟的指针颜色改变... 设置一个定时器 先放上一张效果图,参考一下 先建一个画布,写好样式 <style type="text/css"> *{ margin: 0; padding: 0; } div{ //设置div的text-align为center,margin-top text-align: center; mar

CANVAS画布与SVG的区别

CANVAS是html5提供的新元素<canvas>,而svg存在的历史要比canvas久远,svg并不是html5专有的标签,最初svg是用xml技术(超文本扩展语言,可以自定义标签或属性)描述二维图形的语言.在H5中看似canvas与svg很像,但是,他们有巨大的差别. CANVAS Canvas 是通过 JavaScript 来绘制 2D 图形. Canvas 是逐像素进行渲染的. 在Canvas中,一旦图形被绘制完成,他就不会继续得到浏览器的关注,如果他的位置发生变化,那么就需要重新来

Canvas + JavaScript 制作图片粒子效果

首先看一下源图和转换成粒子效果的对比图:       左侧图片为源图,右侧图片为粒子效果图.该效果是在Canvas画布上制作的.将图片制作成粒子效果相对而言是比较简单的.重点了解两个知识点即可 1:图片是通过image对象形式绘制在画布上的,然后使用Canvas的getImageData接口,获取图像的像素信息. var imageData=ctx.getImageData(x, y, width, height); 参数说明:x,y为画布上的x和y坐标 width,height为获取指定区域图