核心:

  1,document.styleSheets 修改css里的keyframes属性值

  2,表针角度的计算

最终显示效果:

<!DOCTYPE html>
<html>
<head>
<title>实现表盘样式的时间显示</title>
<meta charset="utf-8"/> <style> div[id^="a"]{position:absolute;
font-size:.1em; text-align:center;
width:7px; height:5px;
top:0; left: 46.5px;
transform-origin:50% 50px;
}
#a1{transform:rotate(30deg)}
#a2{transform:rotate(60deg)}
#a3{transform:rotate(90deg)}
#a4{transform:rotate(120deg)}
#a5{transform:rotate(150deg)}
#a6{transform:rotate(180deg)}
#a7{transform:rotate(210deg)}
#a8{transform:rotate(240deg)}
#a9{transform:rotate(270deg)}
#a10{transform:rotate(300deg)}
#a11{transform:rotate(330deg)}
</style>
<style>
#clock{width:100px; height:100px;
border-radius:50%;
border:4px solid black;
position:relative;
}
#s{width:2px; height:55px;
position:absolute; top:5px; left:49px;
background-color:red;
transform-origin:50% 45px;
-webkit-animation:rotateS 60s linear infinite;
}
#m{width:4px; height:50px;
position:absolute; top:10px; left:48px;
background-color:black;
transform-origin:50% 40px;
-webkit-animation:rotateM 3600s linear infinite;
}
#h{width:6px; height:45px;
position:absolute; top:15px; left:47px;
background-color:black;
transform-origin:50% 35px;
-webkit-animation:rotateH 43200s linear infinite;
}
@-webkit-keyframes rotateS{
0%{transform:rotate(0deg)}
100%{transform:rotate(360deg)}
}
@-webkit-keyframes rotateM{
0%{transform:rotate(0deg)}
100%{transform:rotate(360deg)}
}
@-webkit-keyframes rotateH{
0%{transform:rotate(0deg)}
100%{transform:rotate(360deg)}
} </style>
</head>
<body>
<div id="clock">
<div id="h"></div>
<div id="m"></div>
<div id="s"></div>
<div id="a1">I</div>
<div id="a2">II</div>
<div id="a3">III</div>
<div id="a4">IIII</div>
<div id="a5">V</div>
<div id="a6">VI</div>
<div id="a7">VII</div>
<div id="a8">VIII</div>
<div id="a9">IX</div>
<div id="a10">X</div>
<div id="a11">XI</div>
<div id="a12">XII</div>
</div>
<script> window.onload=function(){
//获得当前页面第二个样式表文件
var sheet=document.styleSheets[1];
//获得sheet中三个keyframes
var Skeyframes=sheet.cssRules[4];
var Mkeyframes=sheet.cssRules[5];
var Hkeyframes=sheet.cssRules[6];
//获得三个keyframes下的内嵌rule
var SStartRule=Skeyframes.cssRules[0];
var SEndRule=Skeyframes.cssRules[1];
var MStartRule=Mkeyframes.cssRules[0];
var MEndRule=Mkeyframes.cssRules[1];
var HStartRule=Hkeyframes.cssRules[0];
var HEndRule=Hkeyframes.cssRules[1];
//计算当前时间对应的三个指针的角度
var now=new Date();
var h=now.getHours();
var m=now.getMinutes();
var s=now.getSeconds();
var hDeg=(h*3600+m*60+s)/(3600*12)*360;
var mDeg=(m*60+s)/3600*360;
var sDeg=360*s/60; //设置三个指针起始角度分别为sDeg,mDeg,hDeg
SStartRule.style.transform=
"rotate("+sDeg+"deg)";
MStartRule.style.transform=
"rotate("+mDeg+"deg)";
HStartRule.style.transform=
"rotate("+hDeg+"deg)";
//设置三个指针的结束较为分别为其起始角度+360度
SEndRule.style.transform=
"rotate("+(sDeg+360)+"deg)";
MEndRule.style.transform=
"rotate("+(mDeg+360)+"deg)";
HEndRule.style.transform=
"rotate("+(hDeg+360)+"deg)";
} </script>
</body>
</html>

js实现显示系统时间的表盘的更多相关文章

  1. js实时显示系统时间

    刚刚在做后台页面最上面要动态显示时间刚写了这个代码 将这段代码加入<head></head> <!--时间显示代码 --><script>functio ...

  2. 时间操作(JavaScript版)—年月日三级联动(默认显示系统时间)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangshuxuncom/article/details/35263317         这个功能 ...

  3. Qt 实时显示系统时间

    前言 我们用一个label控件来实时显示系统时间,用到 QTimer 和 QDateTime 这个两个类. 正题 头文件: #ifndef MAINWINDOW_H #define MAINWINDO ...

  4. 使用js实现显示系统当前时间并实现倒计时功能并触发模态框(遮罩)功能

    常常在我们的网页中需要倒计时来触发一些函数,例如遮罩等,在本项目中,通过使用jquery,bootstrap,实现了显示系统当前时间,并且实现了倒计时的功能,倒计时实现后将会弹出模态框(遮罩层).模态 ...

  5. 小程序,用js获取当前系统时间并显示

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. html代码中显示系统时间

    可以显示系统的静态时间和动态时间 1,静态时间 <script type="text/javascript"> var myDate = new Date(); doc ...

  7. Android学习总结——实时显示系统时间

    我们都知道System.currentTimeMillis()可以获取系统当前的时间,这里要实时显示就可以开启一个线程,然后通过handler发消息,来实时的更新TextView上显示的系统时间.具体 ...

  8. linux显示系统时间

    date   查看系统时间 设置系统时间 # date --set “09/17/10 11:50" (月/日/年时:分:秒) # clock –systohc  将系统时间写入硬件时间

  9. 用JS实现实时显示系统时间

    废话我就不多说了,直接上图和代码了 效果图: 代码视图: 下面为大家附上代码,复制即可用: <!DOCTYPE html> <html lang="en"> ...

随机推荐

  1. nodejs入门-做一个代理服务器

    看到node.js的httpServer和http.request,第一个想法居然是可以用它做一个代理服务器下面代码,实现了代理的基本功能,通过网络的代理设置将你的浏览器的请求转到这个httpServ ...

  2. C++中char类型的十六进制字符串转换成字节流

    如a[5]="1234"转换成a[5]={0x12,0x34} 代码如下: void HexStrToByte(const char* source, unsigned char* ...

  3. 20145219 《Java程序设计》第02周学习总结

    20145219 <Java程序设计>第02周学习总结 教材学习内容总结 类型:基本类型.类类型(参考类型) 基本类型: 整数:short占2字节,int占4字节,long占8字节 字节: ...

  4. Oracle大总结

    maven的常见两个指令说明 mvn install 是将你打好的jar包安装到你的本地库中,一般没有设置过是在 用户目录下的 .m2\下面.mvn package 只是将你的代码打包到输出目录,一般 ...

  5. Hibernate关联关系映射之一对一关联关系

    人和身份证之间就是一个典型的一对一关联关系.实现一对一关联关系映射的方式有两种一种是基于外键,一种是基于主键,下面我们先看基于外键的关联方式 首先看他们的实体类 Person类 ? 1 2 3 4 5 ...

  6. 使用MyCat分表分库原理分析

    Mycat可以实现 读写分离 分表分库 主从复制是MySQL自带的哈~ 关于分片取模算法:  根据id进行取模  根据数据库集群的数量(或者说是表数量,mycat里面一个表对应一个库) 使用MyCat ...

  7. 【P3254】圆桌问题(最大流,洛谷)

    看到题目,产生第一反应,是否可以匹配的是这么多.那么连边跑一遍最大流就行了. 从源点向每个单位连一条长度为l的边,然后所有单位和餐桌分别连边,流量为1,所有餐桌向汇点连边,流量为餐桌容量.然后跑一遍最 ...

  8. 【bzoj4806~bzoj4808】炮车马后——象棋四连击

    bzoj4806——炮 题目传送门:bzoj4806 这种题一看就是dp...我们可以设$ f[i][j][k] $表示处理到第$ i $行,有$ j $列没放炮,$ k $列只放了一个炮.接着分情况 ...

  9. PAT1076. Forwards on Weibo (30)

    使用DFS出现超时,改成bfs DFS #include <iostream> #include <vector> #include <set> using nam ...

  10. Git和GitHub相关

    组员从GitHub上下载项目并上传项目的步骤如下 .组员接收到组长发的项目地址,组员需要从GitHub上把项目克隆下来,首先组员 需要在本地的一个文件夹里打开git,然后运行如下代码:git clon ...