1. 程式人生 > >web前端之時鐘(css+js)

web前端之時鐘(css+js)

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>時鐘</title>
	<style type="text/css">
		.clock_box{
			width:300px;
			height:300px;
			border:5px solid #FF7F24;
			border-radius: 50%;
			position: relative;
		}
		.clock_dial{
			font-size: 18px;
			width:100%;
			height: 100%;
			position: relative;
			-moz-transform-origin:center center;
			-webkit-transform-origin:center center;
			-o-transform-origin:center center;
			transform-origin: center center;
			text-align: center;

		}
		.dial{
			position: absolute;
			width:20px;
			height: 100%;
			top:0;
			left:140px;

		}
		.dial span{
			width:3px;
			height:18px;
			background:black;
			display: inline-block;
			vertical-align: top;
		}
		.dial b{
			display:inline-block;
		}
		.H,.M,.S{
			position:absolute;
			height: 100%;
			top:0;
			left: 50%;
			-webkit-transform:translate3d(-50%,0,0);
			-ms-transform:translate3d(-50%,0,0);
			-o-transform:translate3d(-50%,0,0);
			text-align: center;
		}
		.H span{
			margin-top: 80px;
			width:6px;
			height: 80px;
			background:black;
			display:inline-block;
		}
		.M span{
			margin-top: 60px;
			height: 100px;
			width:6px;
			background:black;
			display:inline-block;			
		}
		.S span{
			margin-top: 45px;
			height: 120px;
			width:3px;
			background:red;
			display: inline-block;
			position:relative;
		}
		.S span:after{
			content:'';
			width:10px;
			height: 10px;
			border-radius: 50%;
			background:red;
			position: absolute;
			bottom:10px;
			left:-3.5px;

		}
	</style>
</head>
<body>
	<div class="clock_box">
		<div class="clock_dial">
			<div class="dial"><span></span><br><b>12</b></div>
			<div class="dial"><span></span><br><div>1</div></div>
			<div class="dial"><span></span><br><div>2</div></div>
			<div class="dial"><span></span><br><b>3</b></div>
			<div class="dial"><span></span><br><div>4</div></div>
			<div class="dial"><span></span><br><div>5</div></div>
			<div class="dial"><span></span><br><b>6</b></div>
			<div class="dial"><span></span><br><div>7</div></div>
			<div class="dial"><span></span><br><div>8</div></div>
			<div class="dial"><span></span><br><b>9</b></div>
			<div class="dial"><span></span><br><div>10</div></div>
			<div class="dial"><span></span><br><div>11</div></div>
		</div>
		<div class="H"><span></span></div>
		<div class="M"><span></span></div>
		<div class="S"><span></span></div>
	</div>

	<script type="text/javascript">
		var clock_box=document.querySelector('.clock_box'),
			clock_dial=document.querySelector('.clock_dial'),
			dial=document.querySelectorAll('.dial');
		var H_clock=document.querySelector('.H'),
			M_clock=document.querySelector('.M'),
			S_clock=document.querySelector('.S');

			console.log(dial[0].lastChild)

			//1 製作錶盤
			 for(var i=0;i<dial.length;i++){
			 	var angle=360/12*i;
			 	dial[i].style.transform='rotate('+angle+'deg)';
			 	dial[i].lastChild.style.transform='rotate('+-angle+'deg)';
			 	
			}
			//2 獲得當地時間,用計時器實現動畫效果
			function clockMove(){
				var nowTime=new Date();
				var H=nowTime.getHours();
				var M=nowTime.getMinutes();
				var S=nowTime.getSeconds();
				//1s是6度,1m是6度,1h是30度;
				S_clock.style.transform='rotate('+S*6+'deg)';
				H_clock.style.transform='rotate('+(H*30+30/60*M)+'deg)';
				M_clock.style.transform='rotate('+M*6+'deg)';


			}
			var timer=setInterval(function(){
				clockMove();
			},1000)


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

我們所見的時鐘的時分針一般不是定在整點數的,所以我們在設定時針的角度時除了H*30度之外再加上每過一分鐘時針轉動的角度也就是30/60