JS 做时钟
今天,给大家分享一个用JS做的时钟。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style media="screen">
#wrap {
width: 500px;
height: 500px;
border: 5px solid black;
border-radius: 500px;
margin: auto;
position: relative;
}
</style>
<title></title>
</head>
<body>
<div id="wrap">
</div>
</body>
<script type="text/javascript">
for (var i = 1; i < 61; i++) { //制作刻度
var positer =document.createElement('div'); // 设置一个新的div 命名为positer 也可以在css 样式中写 这里我写在 js里
positer.style.width = '10px';
positer.style.height = '500px';
positer.style.position = 'absolute';
positer.style.left = '245px';
// positer.style.background = 'blue';
wrap.appendChild(positer); // 把positer 放入 wrap 中
var scale = document.createElement('div'); //设置一个新的div 命名为scale (也可以写在css中)
scale.style.width = '5px';
scale.style.height = '10px';
scale.style.background = 'gray';
scale.style.margin = 'auto';
positer.appendChild(scale); // 把scale 放入 positer 中
var number = document.createElement('span');
number.style.display = "inline-block";
positer.appendChild(number);
number.innerHTML = i ; // 把 i 插入 number中
number.style.color = 'gray';
number.style.fontSize = '0.5em';
var warp = document.getElementById('wrap');
positer.style.transform = "rotate("+i * 6+"deg)"; // positer 随着 i的变化旋转的角度也变化
number.style.transform = "rotate(-"+i * 6+"deg)";
if (i % 5 ==0 ) { // 当 i能被5整除时
scale.style.width = '8px';
scale.style.height = '20px';
scale.style.background = 'black';
number.innerHTML =(i / 5); // 把(i/5)的值插入到number 中
number.style.color = 'black'; // 改变颜色
number.style.fontSize = '2em'; // 改变字体大小
}
}
dot =document.createElement('div'); // 定义中间的中心轴
dot.style.width = '20px';
dot.style.height = '20px';
dot.style.background ='red';
dot.style.position = 'absolute';
dot.style.borderRadius = '20px';
dot.style.top = '240px';
dot.style.left = '240px';
dot.style.zIndex = 100;
wrap.appendChild(dot); //把dot 放入 wrap中
// 定义时针
hour = document.createElement('div');
hour.style.width = '0';
hour.style.height = '120px';
hour.style.border = '4px solid black';
hour.style.position = 'absolute';
hour.style.borderRadius = '20px';
hour.style.transformOrigin = 'bottom'; // 定义它的起始转动的位置
hour.style.left = '246px';
hour.style.top = '126px';
wrap.appendChild(hour); // 把 hour 放入 wrap中
//定义分针
minute = document.createElement('div');
minute.style.width = '0';
minute.style.height = '160px';
minute.style.border = '3px solid black';
minute.style.borderRadius = '20px';
minute.style.position = 'absolute';
minute.style.transformOrigin = 'bottom';
minute.style.left = '247px';
minute.style.top = '87px';
wrap.appendChild(minute);
//定义秒针
second = document.createElement('div');
second.style.width = '0';
second.style.height = '300px';
second.style.border = '2px solid red';
second.style.position = 'absolute';
second.style.left = '248px';
second.style.transformOrigin = '1px 250px'; // 定义秒针起始转动的位置 1px指 它宽度的一半 250px指正个 wrap 的一半
wrap.appendChild(second);
function timeCounter(){ //定义函数 命名为 timeCounter
var currentDate = new Date(); //取现在的时间赋值于变量 currentDate
var Hhour = currentDate.getHours(); // 取现在的小时
var Mminute = currentDate.getMinutes(); // 取现在的分钟
var Ssecond = currentDate.getSeconds(); // 取现在的秒
var seconds = Hhour * 3600 + Mminute * 60 + Ssecond ; // 把今天所有的秒数赋值给变量 seconds
hour.style.transform = 'rotate('+seconds / 120+'deg)'; // 时针每秒转的度数
minute.style.transform = 'rotate('+seconds * 0.1+'deg)'; // 分针每秒转的度数
second.style.transform = 'rotate('+seconds * 6+'deg)'; // 秒针 每秒转的度数
}
setInterval('timeCounter()', 1000); // 重复函数timeCounter 每1000毫秒执行一次 也就是1秒
</script>
</html>
这里的图片即使做好的图片,做好的秒针,分针,时针都是动的。
JS 做时钟的更多相关文章
- js 动态时钟
js 动态时钟 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...
- AJAX部分---对比js做日期的下拉选择 和 ajax做三级联动;
js做日期选择: 实现当前年份的前5后5年的日期选择 实现功能:年份和月份页面加载完成使用JS循环添加,天数根据月份的变化动态添加改变 扩展功能:天数可以根据闰年平年变化 <body> & ...
- JS实现时钟特效
<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"& ...
- socket.io+angular.js+express.js做个聊天应用(三)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/www19940501a/article/details/27590611 接着前面博客文章socke ...
- js做小数运算精度问题
当js做小数运算时存在bug,大概是因为二进制和十进制转换之间的关系. bug如图 解决方案 1.运算结果后,乘以100再除以100.网上推荐这种方法但是乘以1000再除以1000依然存在精度问题 2 ...
- HTML 5 +CSS3 + 原生js 做(雪花全屏飘落 + 3d旋转图)
原文:HTML 5 +CSS3 + 原生js 做(雪花全屏飘落 + 3d旋转图) 3d旋转图:主要用css3中transform属性中的rotate,translate;以及用来做舞台效果的 pers ...
- 用 JS 做一个数独游戏(二)
用 JS 做一个数独游戏(二) 在 上一篇博客 中,我们通过 Node 运行了我们的 JavaScript 代码,在控制台中打印出来生成好的数独终盘.为了让我们的数独游戏能有良好的体验,这篇博客将会为 ...
- 用 JS 做一个数独游戏(一)
用 JS 做一个数独游戏(一) 数独的棋盘由 9x9 的方格组成,每一行的数字包含 1 ~ 9 九个数字,并且每一列包含 1 ~ 9 这 9 个不重复的数字,另外,整个棋盘分为 9 个 3x3 的块, ...
- h5 录音 自动生成proto Js语句 UglifyJS-- 对你的js做了什么 【原码笔记】-- protobuf.js 与 Long.js 【微信开发】-- 发送模板消息 能编程与会编程 vue2入坑随记(二) -- 自定义动态组件 微信上传图片
得益于前辈的分享,做了一个h5录音的demo.效果图如下: 点击开始录音会先弹出确认框: 首次确认允许后,再次录音不需要再确认,但如果用户点击禁止,则无法录音: 点击发送 将录音内容发送到对话框中.点 ...
随机推荐
- 二分法&三分法
ural History Exam 二分 #include <iostream> #include <cstdlib> using namespace std; //二分 ...
- 第1章 重构,第一个案例(2):分解并重组statement函数
2. 分解并重组statement (1)提炼switch语句到独立函数(amountFor)和注意事项. ①先找出函数内的局部变量和参数:each和thisAmount,前者在switch语句内未被 ...
- 2016的ChinaJoy沦为ChinaVR?
China Joy已沦为ChinaVR,厂商烧钱参加? 在上海超过40度的高温天下,游戏爱好者们汗流满面地排起长队,拥挤地通过安检进入场馆,但是很快感受到了一丝凉意. ShowGirl少了 " ...
- CXF 动态创建客户端调用稳定版本号为2.7.18
今天用动态创建客户端的方式调用webservice,报了这样一个错: 2017-01-05 20:51:46,029 DEBUG main org.apache.cxf.common.logging. ...
- Mersenne twister 随机数算法实现 in Scheme
这个实现基本上是从 Wiki 上的 Python 版翻译过来的,大量使用了赋值. ;; Mersenne twister algorithm from Wikipedia ;; returns a c ...
- window.open和window.location.href的几种用法
windows.open("URL","窗口名称","窗口外观设定"); <A href="javascript:windo ...
- grails框架的g:paginate分页标签的使用
我用到的grails是2.4.4. 该版本下游一个标签g:paginate 该标签下有以下几个参数:total(必须要填写的项).controller.action.prev.max.offset等等 ...
- Linux的学习日记
CURL 在Ubuntu下尝试安装通过包安装Node.js的时候有这样一种安装方法, 那么有必要学学CURL的知识了. curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Un ...
- 数据结构图文解析之:AVL树详解及C++模板实现
0. 数据结构图文解析系列 数据结构系列文章 数据结构图文解析之:数组.单链表.双链表介绍及C++模板实现 数据结构图文解析之:栈的简介及C++模板实现 数据结构图文解析之:队列详解与C++模板实现 ...
- ASP.NET MVC中viewData、viewBag和templateData的使用与区别
一:类型比较 1.1)ViewBag是动态类型(dynamic). 1.2)ViewData是一个字典型的(Dictionary)-->ViewDataDictionary. 1.3)TempD ...