css3时钟

参考资料:

奇舞团: http://www.75team.com/archives/851

DEMO:demo

截图:

代码:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>css3钟表</title>
	<style id="style">
		body,html{width:100%;height:100%;}
		*,ul{margin:0;padding:0;}
		li{list-style: none;padding:0;margin:0;}
		#box{ position:absolute; left:100px;top:100px; width:300px; height:300px; border-radius: 50%; border:1px solid #999; border:2px solid #000;  }
		.handles,.digits{ position:absolute;left:0;top:0; width:300px; height:300px; }
		.handles{}
		.handles li{ position: absolute; top:0;left:50%;width:2px;height:8px;background-color: #000;transform-origin: 0 150px;}
		.handles li:nth-child(5n+1){ height:14px;}
		.digits li{ position: absolute; top:50%;left:50%;width:20px;height:20px; margin:-10px 0 0 -10px;line-height: 20px; text-align: center; font-size: 18px; font-weight: bold;font-family: ‘microsoft yahei‘, Arial, Helvetica, sans-serif; }
	    .timer{ position: absolute;left:50%;top:50%;width:20px;height:20px; background-color: #000;margin:-10px 0 0 -10px;border-radius: 50%; }
	    .timer:after{ content:‘‘;position: absolute;left:0;top:0;z-index: 10;background-color: #000; width:20px;height:20px; border-radius: 50%;}
		.hours-hand{  position: absolute;bottom:50%;left:50%;width:8px;height:60px;margin-left:-4px; background-color:#000; transform-origin:center bottom; border-top-left-radius:30px;border-top-right-radius:30px; }
		.minutes-hand{ position: absolute;bottom:50%;left:50%;width:6px;height:90px;margin-left:-3px; background-color:#000; transform-origin:center bottom;border-top-left-radius:30px;border-top-right-radius:30px;}
		.seconds-hand{ position: absolute;bottom:50%;left:50%;width:2px;height:120px;margin-left:-1px; background-color:red;  transform-origin:center bottom; transform:rotate(30deg);border-top-left-radius:30px;border-top-right-radius:30px;}
	</style>
	<script>
		window.onload = function(){

			var oBox = document.getElementById(‘box‘),
			 	oHandles = document.getElementById(‘handles‘),
			 	oDigits = document.getElementById(‘digits‘),
			 	oHours = document.getElementById(‘hours‘),
			 	oMinutes = document.getElementById(‘minutes‘),
			 	oSeconds = document.getElementById(‘seconds‘),
			 	timer = null;

			//创建表针;
			var aLiHtml = ‘‘;
			for( var i=0,len=60;i<len;i++ ){
				aLiHtml += ‘<li style="transform:rotate(‘+ ( i*360/60 ) +‘deg);" ></li>‘;
			}
			oHandles.innerHTML = aLiHtml;

			//创建数字;
			var aDigitsHtml = ‘‘;
			var r = 122;
			for( var i=1,len=13;i<len;i++ ){
				var t = -Math.cos( i*360/12*Math.PI/180 )*r;
				var l = Math.sin( i*360/12*Math.PI/180 )*r;
				aDigitsHtml += ‘<li style="transform:translate(‘+ l +‘px,‘+ t +‘px);" >‘+ i +‘</li>‘;
			}
			oDigits.innerHTML = aDigitsHtml;

			//初始化时间;
			setTime();
			timer = setInterval(setTime,1000);

			//设置时间方法;
			function setTime(){

				var myDate  = new Date(),
					seconds = myDate.getSeconds(),
					minutes = myDate.getMinutes() + seconds/60,
					hours   = myDate.getHours() + minutes/60;    

				oHours.style.transform = ‘rotate(‘+ hours*(360/12) +‘deg)‘;
				oMinutes.style.transform = ‘rotate(‘+ minutes*(360/60) +‘deg)‘;
				oSeconds.style.transform = ‘rotate(‘+ seconds*(360/60) +‘deg)‘;

			}	

			//拖拽;
			drag( oBox );

			//拖拽方法;
			function drag( obj ){

				obj.onmouseover = function(){
					obj.style.cursor = ‘move‘;
				}

				obj.onmousedown = function(  ){

					var ev = window.event || event;
					var yuanT = obj.offsetTop;
					var yuanL = obj.offsetLeft;
					var disX = ev.clientX - yuanL;
					var disY = ev.clientY - yuanT;

					document.onmousemove = function( event ){

						var ev = window.event || event;

						var evX = ev.clientX;
						var evY = ev.clientY;
						var t = evY - disY;
						var l = evX - disX ;

						var maxWidth = document.body.clientWidth - obj.offsetWidth;
						var maxHeight = document.body.clientHeight - obj.offsetHeight;

						if( t > maxHeight ){
							t = maxHeight;
						}else if( t < 0 ){
							t = 0;
						}

						if( l > maxWidth ){
							l = maxWidth;
						}else if( l < 0 ){
							l = 0;
						}

						obj.style.top = t + ‘px‘;
						obj.style.left = l + ‘px‘;

						ev.stopPropagation();
						return false;

					} 

					document.onmouseup = function( event ){
						document.onmousemove = null;
					}

				}

			}

		}
	</script>
</head>
<body>
	<div id="box">
		<ul id="handles" class="handles">
		</ul>
		<ul id="digits" class="digits">
		</ul>
		<ul class="timer">
			<li id="hours" class="hours-hand"></li>
			<li id="minutes" class="minutes-hand"></li>
			<li id="seconds" class="seconds-hand"></li>
		</ul>
	</div>
</body>
</html>

后记:

网上有很多这种css3画的钟表,原理其实就是transform里的rotate和transform-origin的旋转元素基点位置,至于数字位置的看奇舞团的视频就可以了原理一样,只不过觉得太简单了加了个拖拽。。。。

时间: 2024-10-10 02:34:51

css3时钟的相关文章

纯CSS3时钟

本来打算还做一下系统时间动态时钟,但是奔着纯CSS3的目的去就不加了.. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>css3时钟</title> 6 <style> 7 *{ 8 margin:0; 9 padding:0; 10 } 11 body{ 12 font

CSS3时钟式进度条

CSS3时钟式进度条,加载完成时生成一个圆,数字慢慢变成100,适时的显示加载进度.友情提醒,如果预览时网页左下角提示错误,刷新一下就可以看到效果了:实际使用中不会出现这样的问题. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=&

CSS3 时钟

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>CSS3 click</title> <style type="text/css"> .clock-wrapper { position: absolute; top: 0; left: 0; height: 100%; wi

CSS3简易表盘时钟

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>css3时钟</title> <style> .box{ width: 300px; height: 300px; border-radius: 50%; border: 5px solid #ccc; margin: 100px auto; p

css3 简易时钟

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE-edge,chrome=1"> <meta name="viewport" content="width=devi

14款超时尚的HTML5时钟动画

时钟动画在网页应用中也非常广泛,在一些个人博客中,我们经常会看到一些相当个性化的HTML5时钟动画.今天我们向大家分享了14款形态各异的超时尚HTML5时钟动画,其中有圆盘时钟.3D时钟.个性化时钟等,强大的HTML5为时钟动画增添了不少精彩,希望能给大家带来帮助. 1.可爱的CSS3圆盘时钟动画 今天要分享的也是一款可爱的CSS3圆盘时钟动画,时钟背景是乳白色的,显得非常干净,另外,时钟也可以和你本地的时候保持同步. 在线演示 源码下载 2.HTML5 SVG圆盘时钟动画 5种时钟样式 今天我

10款功能强大的jQuery/CSS3图片特效插件

1.CSS3实现的底部带滚动云彩效果的网站登录页面 CSS3实现的底部带滚动云彩效果的网站登录页面特效源码,是一段实现页面底部拥有滚动云彩动态效果的特效源码,想要在网站中实现此类效果的朋友们可以前来下载使用.本段代码兼容目前最新的各类主流浏览器,是一款非常优秀的特效源码. 在线演示 源码下载 2.HTML5实现的3D球体斑点运动动画特效源码 这是一个很酷的HTML5 3D动画效果,是一个小球,小球表面出现跳动的斑点,斑点跳动时形成各种各样的形状,其实这款动画并不是正宗的HTML5 3D动画,而是

14款形态各异的超时尚HTML5时钟动画

14款超时尚的HTML5时钟动画(附源码)   时钟动画在网页应用中也非常广泛,在一些个人博客中,我们经常会看到一些相当个性化的HTML5时钟动画.今天我们向大家分享了14款形态各异的超时尚HTML5时钟动画,其中有圆盘时钟.3D时钟.个性化时钟等,强大的HTML5为时钟动画增添了不少精彩,希望能给大家带来帮助. 1.可爱的CSS3圆盘时钟动画 在线演示:http://www.html5tricks.com/demo/css3-circle-clock/index.html 源码下载:http:

9种jQuery和css3图片动画特效代码演示

1.自由旋转的jQuery图片 演示和下载地址 2.css3阴影动画效果 演示和下载地址 3.拉窗帘特效图片 演示和下载地址 4.css3文字特效动画 演示和下载地址 5.css3时钟代码 演示和下载地址 6.css3图片放大动画 演示和下载地址 7.jQuery滑块图片展开效果 演示和下载地址 8.css3文字阴影 演示和下载地址 9.jQuery 3d图片旋转特效 演示和下载地址