css3如何利用transform打造走动的2D时钟

小编给大家分享一下css3如何利用transform打造走动的2D时钟,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

利用transform的旋转rotate打造一个时钟,再结合JavaScript的定时器让它走起来。

截一个动图:

css3如何利用transform打造走动的2D时钟

案例知识点分析:

1、利用定位完成时钟的绘制。

2、背景使用了放射性渐变。

3、利用JavaScript完成刻度和时间数字的旋转。

4、利用Date()对象获取系统时间,并让时针指向对应的刻度。

5、利用定时器不断更新时间,完成时针的运动。

一、HTML源代码

<divid="clock-wrap">
	<divid="clock">
	<ulid="list">
</ul>
</div>
<divid="num">
	<ul>
	<li>12</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
</ul>
</div>
<divid="hour"></div>
<divid="min"></div>
<divid="sec"></div>
<divid="circle"></div>
</div>

二、CSS样式

<styleid="css">/*注意这里为style标签添加了一个id,在JavaScript里面有获取,并往里面添加css样式。*/
body,ul{
	margin:0;
	padding:0;}
body{
	font:1em"microsoftYahei";
	color:#666;
	background-color:#333;}
h2{
	text-align:center;
	color:#eee;
	font-size:3rem;}
li{
	list-style:none;}
p{
	text-align:center;
	color:#ddd;
	position:relative;
	top:100px;
	}
a{
	color:#999;
	text-decoration:none;
	transition:0.2s;}
a:hover{
	color:#ddd;}
#clock-wrap{
	width:400px;
	height:400px;
	border:10pxsolid#fff;
	border-radius:50%;
	margin:80pxauto0;
	position:relative;
	box-shadow:0040pxrgba(0,0,0,1)}
#clockul{
	width:400px;
	height:400px;
	position:relative;
	border-radius:50%;
	background:radial-gradient(circleatcenter,#667eea,#764ba2);
	box-shadow:0050pxrgba(0,0,0,0.5)inset;/*设置内阴影*/
	}
#clockulli{
	position:absolute;
	left:50%;
	margin-left:-2px;
	top:0;
	width:4px;
	height:10px;
	background:rgba(255,255,255,.5);
	transform-origin:center200px;/*li的旋转中心点在圆形中间。*/
	}
#clockli:nth-child(5n+1){/*5个刻度为一组,每一组的第一个刻度要长一点。*/
	height:18px;
	}
#num{
	position:absolute;
	width:360px;
	height:360px;
	left:0;
	right:0;
	top:0;
	bottom:0;
	margin:auto;
	}
#numli{
	position:absolute;
	left:50%;
	margin-left:-10px;
	top:0;
	color:rgba(255,255,255,.5);
	font:2emArial,Helvetica,sans-serif;	
	transform-origin:center180px;}

#hour,#min,#sec{
	background:#fff;
	position:absolute;
	left:50%;
	top:50%;
	transform-origin:bottom;/*时针的旋转点在自己的底部。*/
	box-shadow:006pxrgba(0,0,0,.5)
	}
#hour{
	width:14px;
	height:100px;
	margin-left:-7px;
	margin-top:-100px;
	border-radius:3px;
	}
#min{
	width:10px;
	height:150px;
	margin-left:-5px;
	margin-top:-150px;
	border-radius:2px;
	}
#sec{
	width:4px;
	height:180px;
	margin-left:-2px;
	margin-top:-180px;
	border-radius:1px;
	}
#circle{
	width:40px;
	height:40px;
	border-radius:50%;
	background:#fff;
	position:absolute;
	left:50%;
	margin-left:-20px;
	top:50%;
	margin-top:-20px;
	box-shadow:0020pxrgba(0,0,0,.4)}
</style>

三、JavaScript代码

<script>
window.onload=function(){
	varoList=document.getElementById("list");
	varoCSS=document.getElementById("css");//style标签也可以加id属性。
	varaNums=document.getElementById("num").getElementsByTagName("li");
	varoHour=document.getElementById("hour");
	varoMin=document.getElementById("min");
	varoSec=document.getElementById("sec");
	varaLi="";
	varsCSS="";
	for(vari=0;i<60;i++){//循环60次,产生刻度值和每一个刻度旋转的度数。
		aLi+="<li></li>";
		sCSS+="#clockli:nth-child("+(i+1)+"){transform:rotate("+i*6+"deg);}"
		}
	for(vari=0;i<12;i++){
		sCSS+="#numli:nth-child("+(i+1)+"){transform:rotate("+i*30+"deg);}"
		}
	oList.innerHTML=aLi;
	oCSS.innerHTML+=sCSS;//css需要追加到原来的css文档中。
	
	
	
	myTime();//初始化函数。
	setInterval(myTime,1000);//设置定时器,每隔1秒执行一次函数。
	functionmyTime(){
		varoDate=newDate();
		variSec=oDate.getSeconds();
		//精确到秒数的分钟数。
		variMin=oDate.getMinutes()+iSec/60;
		//精确到分秒的小时数。可以在旋转的时候更精确。
		variHour=oDate.getHours()+iMin/60;
		
		oSec.style.transform="rotate("+iSec*6+"deg)";
		oMin.style.transform="rotate("+iMin*6+"deg)";
		oHour.style.transform="rotate("+iHour*30+"deg)";//时针的指向需要把分钟和秒数算进去才精确。
		}
	
	}
</script>

以上是“css3如何利用transform打造走动的2D时钟”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2021-03-17 20:51:13
收藏
分享
海报
0 条评论
163
上一篇:css盒子模型之内边距padding怎么用 下一篇:css3如何利用transform变形结合事件完成扇形导航
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码