指针时钟表的制作

觉得挺好玩的就做了一个,模拟指针表。就是这个样子:

额,请忽略这个配色,就是随意写的颜色,有点太ZF网站的风格了,有兴趣的可以自己设计个高大上的样式。

首先是搭建html:很简单

<body>
<div id="wrap">
<ul id="list"><li></li></ul>
<div id="cir"></div>
<div id="hour"></div>
<div id="min"></div>
<div id="sec"></div>
</div>
</body>


分别是表盘、刻度、圆点、时针、分针、秒针
接下来就是样式,表盘wrap的样式首先是大小,圆角半径,边框线,定位
#wrap{width:200px;height:200px;margin:100px auto 0;border-radius: 50%;border:5px #FF1493 solid;position: relative;}
后边的也没什么可说的,都差不多,各位自己看就行了
#cir{width:10px;height:10px;background-color:#000000;border-radius:50%;position: absolute;top:95px;left:95px;}
#hour,#min,#sec{position: absolute;transform-origin: center bottom;}
#hour{width:8px;height:76px;background-color:#f00;top:24px;left:96px;}
#min{width:6px;height:80px;background-color:#0f0;top:20px;left:97px;}
#sec{width:2px;height:85px;background-color:#00f;top:15px;left:99px;}
主要就是设定合理的大小和让他们都归位,然后有一个需要特别说一下:
#list li{width:2px;height: 10px;position: absolute;top:0;left:100px;background-color: #000; transform-origin: center 99px;}

这个li,就是时间刻度,到时要用js动态生成加到ul里面,这里有个样式属性:transform-origin:x y;意思是:“设置旋转元素的基点位置”,我设置的是center 99px。
body #wrap li:nth-child(5n+1){height:14px;background-color: #FFA500;}

这个是设置整点的不同颜色,每隔5个旧改变一下样式。

然后就是javascript的部分了:
首先是取得我们需要操作的dom元素
window.onload=function(){
var oUl = document.getElementById("list");
var oCir = document.getElementById("cir");
var oHour = document.getElementById("hour");
var oMin = document.getElementById("min");
var oSec = document.getElementById("sec");
var oCss = document.getElementById("oCss");
var aLi = "";
var aCss = "";

这里就要动态添加事件刻度,并且让他每加一个就旋转6deg,因为360/60嘛。

for(var i=0;i<60;i++){

aLi+="<li></li>";

aCss+="#wrap li:nth-child("+(i+1)+"){transform: rotate("+i*6+"deg);}"

}

oUl.innerHTML+=aLi;

这里的oCss是<style>取得的id属性

oCss.innerHTML+=aCss;

后面这些就不多说了,获取时间时、分、秒;设定他们各自的旋转度数,然后隔一秒调用一次,完成。

function toTime(){

var myDate = new Date();

var iSec = myDate.getSeconds();

var iMin = myDate.getMinutes()+iSec/60;

var iHour = myDate.getHours()+iMin/60;

oHour.style.transform="rotate("+iHour*30+"deg)";

oMin.style.transform="rotate("+iMin*6+"deg)";

oSec.style.transform="rotate("+iSec*6+"deg)";

}

toTime();

setInterval(toTime,1000)}



 
 

 

 

 

Save

转载于:https://www.cnblogs.com/bodom-zhao/p/6179277.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,可以利用针、分针和秒针的角速度来解决钟表指针重合的问题。根据引用[2]中提供的公式,假设针的角速度为ω,分针的角速度为12ω,秒针的角速度为720ω。我们可以通过比较针和分针、针和秒针、分针和秒针在一定时间内走过的角度来确定重合的时间。 首先,我们可以假设针和分针在t秒后重合。根据引用中的公式,针在t时间内走过的角度为30t,分针在t时间内走过的角度为360t。根据引用中的规则,这两个角度的差值必须是360的整数倍。 类似地,我们可以假设分针和秒针在t秒后重合。根据引用中的公式,分针在t时间内走过的角度为360t,秒针在t时间内走过的角度为43200t。这两个角度的差值也必须是360的整数倍。 因此,针、分针和秒针三者的重合时间可以通过求解上述两个方程的交集来确定。 这个问题可以通过编写一个循环来解决。我们可以从0秒开始逐秒增加时间,然后根据上述公式计算针、分针和秒针在该时间内的角度,并判断是否满足重合的条件。如果满足条件,则记录该时间。最后,输出所有记录的重合时间即可。 需要注意的是,根据引用中的信息,针、分针、秒针三者在24小内重合了2次,重合时间分别是在0点以及12点。因此,我们可以在循环中设置一个计数器,当计数器达到2,停止循环。 总结一下解决C语言钟表指针重合问题的步骤: 1. 定义三个变量分别针、分针和秒针的角速度(ω、12ω、720ω)。 2. 定义一个计数器,初始值为0。 3. 从0秒开始逐秒增加时间,计算针、分针和秒针在该时间内的角度。 4. 判断针和分针、针和秒针、分针和秒针的角度差是否是360的整数倍,如果是,则记录该时间并将计数器加1。 5. 如果计数器达到2,则停止循环。 6. 输出所有记录的重合时间。 请注意,以上只是解决问题的一种方法,还有其他方法可以根据具体需求选择使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值