JavaScript+svg绘制的一个动态时钟

结果图:

代码如下:

<!DOCTYPE html>
<html>
<head>
	<title>动态时钟</title>
</head>
<body >
<script type="text/javascript">
function updateTime(){			//更新svg时钟来显示当前时间
	var now =new Date();			//当前时间
	var min = now.getMinutes();	//分钟
	var hour =  (now.getHours()%12)+min/60;//装换成可以在时钟上表示的时间
	var minangle = min*6;		//每6度表示一分钟
	var hourangle  = hour*30;	//每30度表示一个小时

	//获取表示时钟时针和分针的svg元素
	var minhand = document.getElementById(‘minutehand‘);
	var hourhand = document.getElementById(‘hourhand‘);

	//设置这些元素的svg属性,将他们移动到中面上
	minhand.setAttribute("transform","rotate("+minangle+",50,50)");
	hourhand.setAttribute("transform","rotate("+hourangle+",50,50)");

	//每一分钟更新下时钟显示时间
	setTimeout(updateTime,60000);
}
</script>
<style type="text/css">
#clock{				/*用于时钟的全局样式*/
	stroke:black;	/*黑线*/
	stroke-linecap: round;	/*圆角*/
	fill:#eef;			/*以浅蓝灰色为背景*/
}
#face {stroke-width:3px;} /*时钟的外边框*/
#ticks{stroke-width:2;} 	/*标记每个小时的线段*/
#hourhand {stroke-width:5px;} /*相对较粗的时针*/
#minutehand{stroke-width:3px;} /*相对较细的分针*/
#numbers{
	font-family: sans-serif;
	font-size: 7pt;
	font-weight: bold;
	text-anchor: middle;
	stroke:none;
	fill:black;
}
</style>
<!-- viewBox是坐标系,width和height是指屏幕大小 -->
<svg id="clock" viewBox="0 0 100 100" width="500" height="500">
	<defs>	<!-- 定义下拉阴影的滤镜 -->
		<filter id="shadow" x="-50%" y="-50%" width="200%" height="200%">
			<feGaussianBlur in="SourceAlpha" stdDeviation="1" result="blur"/>
			<feOffset in="blur" dx="1" dy="1" result="shadow"/>
			<feMerge>
				<feMergeNode in="SourceGrahic"/>
				<feMergeNode in="shadow"/>
			</feMerge>
		</filter>
	</defs>
	<circle id="face" cx="50" cy="50" r="45"/> 	<!-- 钟面 -->
	<g id="ticks">
		<line x1=‘50‘ y1="5.000" x2="50.00" y2="10.00" />
		<line x1=‘72.50‘ y1="11.03" x2="70.00" y2="15.36" />
		<line x1=‘88.97‘ y1="27.50" x2="84.64" y2="30.00" />
		<line x1=‘95.00‘ y1="50.00" x2="90.00" y2="50.00" />
		<line x1=‘88.97‘ y1="72.50" x2="84.64" y2="70.00" />
		<line x1=‘72.50‘ y1="88.970" x2="70.00" y2="84.64" />
		<line x1=‘50.00‘ y1="95.00" x2="50.00" y2="90.00" />
		<line x1=‘27.50‘ y1="88.97" x2="30.00" y2="84.64" />
		<line x1=‘11.03‘ y1="72.50" x2="15.36" y2="70.00" />
		<line x1=‘5.000‘ y1="50.00" x2="10.00" y2="50.00" />
		<line x1=‘11.03‘ y1="27.50" x2="15.36" y2="30.00" />
		<line x1=‘27.50‘ y1="11.03" x2="30.00" y2="15.36" />
	</g>
	<g id="numbers">		<!-- 标记重要的几个刻度 -->
		<text x="50" y="18">12</text>
		<text x="85" y="53">3</text>
		<text x="50" y="88">6</text>
		<text x="15" y="53">9</text>
	</g>
	<!-- 初始绘制成竖直的指针,之后通过JavaScript代码来做旋转 -->
	<g id="hands"  filter="url(#shadow)"> <!-- 给指针添加阴影 -->
		<line id="hourhand" x1="50" y1="50" x2="50" y2="24"/>
		<line id="minutehand" x1="50" y1="50" x2="50" y2="20"/>
	</g>
</svg>
</body>
</html>

  

时间: 2024-12-14 04:52:53

JavaScript+svg绘制的一个动态时钟的相关文章

JavaScript+svg绘制的一个饼状图

svg参考:https://www.w3.org/TR/SVG/ <body onload='document.body.appendChild( pieChart([12,23,34,45],640,400,200,200,150, ["red","blue","yellow","green"], ["North","South","East","W

利用canvas画一个动态时钟

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

js+css3实现动态时钟-------Day66

昨天搬家一天,宽带到最后也没有安装上,颇为恼火,但是收拾了一天新租的房屋,倒有了颇多的想法,这里先来实现一个--动态时钟(已经上传到资源里了,图片整的有些粗糙了,汗...) 这里来记录下,这个看起来简单好实现的功能,我在实现的过程中碰到了哪些问题,因为这时还没查看网上的代码,只是根据自己现阶段的学习来做的,可能会有些麻烦,有些粗糙,但是终归是实现了这个效果,心里还是小开心了下. 先来张最终实现的效果图(静态图片); 首先准备素材,我从网上搜到了一个时钟的素材,谁让我的ps还菜的菜呢,然后我有了表

【JavaScript】一个同步于本地时间的动态时钟并且自定义时间格式

本文是对<[JavaScript]一个同步于本地时间的动态时间>一文(点击打开链接)的改进 JavaScript里面的Date类型除了可以直接toLocaleString(),转化成一个以系统格式的时间之外 还可以时间自定义格式,比如可以构造于一个仿QQ聊天框的同步于本地时间的动态时钟 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o

canvas :原生javascript编写动态时钟

canvas :原生javascript编写动态时钟 此时针是以画布的中心为圆心: g.translate(width/2,width/2); 此函数是将画布的原点移到(width/2,width/2) 绘制表盘 function jiang(){ r = width/2 g.clearRect(0, 0, 600, 600); g.save(); g.translate(r, r); g.rotate(-Math.PI / 2); //分钟刻度线 for(var i = 0; i < 60;

由JavaScript,setInterval制作一个简易的时钟

用js可以做许多有趣的小动画,下面是一个简易时钟的小例子,可能样式写的有点多了,下方最终效果图(作为老司机的我有点小完美的强迫症哈哈哈...) <!DOCTYPE html><html><head> <title>时钟</title> <meta charset = "utf-8"> <style type="text/css"> span{ margin: 0; padding:

分享一个很有意思的js,动态时钟显示,能跟随鼠标移动

原文:分享一个很有意思的js,动态时钟显示,能跟随鼠标移动 源代码下载地址:http://www.zuidaima.com/share/1550463688182784.htm

用canvas绘制一个简易时钟

在见识了html5中canvas的强大,笔者准备制作一个简易时钟. 下面就是成果啦,制作之前我们先分析一下,绘制一个时钟需要做哪些准备. 一 . 1.首先这个时钟分为表盘,指针(时针,分针,秒针)和数字三部分. 2.表盘是个圆,这个简单. 3.绘制指针时,需要先获取到系统时间,然后找到时间和角度的关系. 4.然后利用画圆函数,把起始和终点设为同一角度,即可画出射线(指针).  二. 接下来,我们再分析一下,绘制时钟需要用到的函数. 1.arc(x, y, r, start, stop) x, y

【canvas】绘制一个数字时钟

使用canvas绘制一个数字时钟 基础内容 下面是此案例中会使用到的一些绘图API //获取绘图上下文 var ctx = canvas.getContext('2d'); //绘制直线 ctx.moveTo(100, 100); ctx.lineTo(700, 700); //绘制曲线 ctx.arc( centerx, centery, radius, //圆心的坐标以及半径的值 startingAngle,endingAngle, //从哪个弧度制开始到那个弧度值结束 anticlockw