使用css3绘制出圆形动态时钟的原理
众所周知的是div形状是方形的,那么我们首先需要使用border-radius属性将其变换成圆形。
为了使指针转动起来,我们需要使用-webkit-transform-origin:center100px;来设置我们的旋转基点。然后利用-webkit-transform:rotate(0);让我们的li旋转相应的角度形成相应的刻度。
设计好刻度之后,需要涉及一个nth-of-type()的选择器,用来规定其属于父元素的第几个子元素。
在圆形时钟的正中心我们要设一个divicon用于指针的连接点。
然后我们利用js获取div之后对表盘的刻度进行渲染。
最后开一个定时器,每隔一秒执行一次函数。
使用css3绘制出圆形动态时钟的代码
<!DOCTYPEhtml>
<html>
<head>
<metacharset="UTF-8"/>
<title>钟表</title>
<styleid="css">
#wrap{width:200px;height:200px;border:2pxsolid#000;margin:100pxauto;border-radius:50%;position:relative;}
#wrapul{margin:0;padding:0;height:200px;position:relative;list-style:none;}
#wrapulli{width:2px;height:6px;background:#000;position:absolute;left:99px;top:0;-webkit-transform-origin:center100px;}
/*#wrapulli:nth-of-type(1){-webkit-transform:rotate(0);}
#wrapulli:nth-of-type(2){-webkit-transform:rotate(6deg);}
#wrapulli:nth-of-type(3){-webkit-transform:rotate(12deg);}
#wrapulli:nth-of-type(4){-webkit-transform:rotate(18deg);}
#wrapulli:nth-of-type(5){-webkit-transform:rotate(24deg);}
#wrapulli:nth-of-type(6){-webkit-transform:rotate(30deg);}
#wrapulli:nth-of-type(7){-webkit-transform:rotate(36deg);}
#wrapulli:nth-of-type(8){-webkit-transform:rotate(42deg);}*/
#wrapulli:nth-of-type(5n+1){height:12px;}
#hour{width:6px;height:45px;background:#000;position:absolute;left:97px;top:55px;-webkit-transform-origin:bottom;}
#min{width:4px;height:65px;background:#999;position:absolute;left:98px;top:35px;-webkit-transform-origin:bottom;}
#sec{width:2px;height:80px;background:red;position:absolute;left:99px;top:20px;-webkit-transform-origin:bottom;}
.icon{width:20px;height:20px;background:#000;border-radius:50%;position:absolute;left:90px;top:90px;}
</style>
</head>
<body>
<divid="wrap">
<ulid="list">
<!--<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>-->
</ul>
<divid="hour"></div>
<divid="min"></div>
<divid="sec"></div>
<div></div>
</div>
<script>
varoList=document.getElementById("list");//获取到刻度
varoCss=document.getElementById("css");
varoHour=document.getElementById("hour");//获取时针
varoMin=document.getElementById("min");//获取分针
varoSec=document.getElementById("sec");//获取秒针
varoLi="";
varsCss="";
for(vari=0;i<60;i++){//一个表盘总共是60个刻度
sCss+="#wrapulli:nth-of-type("+(i+1)+"){-webkit-transform:rotate("+i*6+"deg);}";
oLi+="<li></li>";
};
oList.innerHTML=oLi;
oCss.innerHTML+=sCss;//表盘刻度渲染完成
toTime();
setInterval(toTime,1000);
functiontoTime(){
varoDate=newDate();//获取当前时间
variSec=oDate.getSeconds();//获取当前秒
variMin=oDate.getMinutes()+iSec/60;//获取当前分
variHour=oDate.getHours()+iMin/60;//获取当前时
oSec.style.WebkitTransform="rotate("+iSec*6+"deg)";//秒针转动角度1秒6度(表盘一圈360度一圈60秒所以一秒6度)
oMin.style.WebkitTransform="rotate("+iMin*6+"deg)";//分钟转动角度1分6度(表盘一圈360度一圈60分所以一分6度)
oHour.style.WebkitTransform="rotate("+iHour*30+"deg)";//时针转动角度一小时30度(表盘一圈360度一圈12小时所以一小时30度)
};
</script>
</body>
</html>

本文转载自中文网

本文转载自中文网
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/css3-style/c55405.shtml