原生JS会跳动的电子表
一个会跳动的电子表,源码--time.html 图片--img
github地址:https://github.com/1056237661/practiceCode
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
.timeBox{
margin: 100px;
padding: 12px;
display: inline-block;
border: 1px solid chartreuse;
}
img{
position: relative;
}
</style>
</head>
<body>
<div class="timeBox">
<img class="timeNum" src="img/1.png"/>
<img class="timeNum" src="img/2.png"/>
<img src="img/second1.png"/> <img class="timeNum" src="img/3.png"/>
<img class="timeNum" src="img/4.png"/>
<img src="img/second1.png"/> <img class="timeNum" src="img/5.png"/>
<img class="timeNum" src="img/0.png"/>
</div>
</body>
<script>
var aImg = document.getElementsByClassName("timeNum"); /* 获取显示时间的img节点 */
var shockNum = [ -15, 15, -9, 9, -4, 0]; /* 振幅的数组 */
var iNow = []; /* 存储每次需要波动的节点下标 */ /* 初始化电子表 */
time();
/* 设置定时器更新时间(1s) */
var timer = setInterval(function(){
time();
},1000);
/* 获取时间方法 */
function time(){
var dateNow = new Date(); /* new一个Date对象 */
var hours = dateNow.getHours(); /* 时 */
var minius = dateNow.getMinutes(); /* 分 */
var seconds = dateNow.getSeconds(); /* 秒 */
var str = timeStyle(hours)+timeStyle(minius)+timeStyle(seconds); /* 用字符串存储当前时间 */
/* 通过str初始化时间表 */
for (var i=0; i<str.length; i++) {
/* 判断每次是哪个需要波动 */
if (aImg[i].index != str.charAt(i)) {
/* 首次循环index值全为undefined,禁止全部波动 */
if (aImg[i].index != undefined) {
iNow.push(i); /* 把需要波动的值加入iNow数组 */
}
aImg[i].index = str.charAt(i); /* 并赋给新的值 */
aImg[i].setAttribute("src","img/"+str.charAt(i)+".png"); /* 替换数字图片 */
}
}
/* 遍历当前需要震动的数组,并设置震动定时器 */
for(x in iNow){
toshocking(iNow[x]);
}
/* 每次震动完数组清零 */
iNow.length = 0;
} /* 为每一个需要震动的数字设置震动定时器 */
function toshocking(z){
var n = 0; /* 波动次数 */
var timer2 = setInterval(function(){
aImg[z].style.top = shockNum[n]+"px";
++n;
/* 若波动完设置的振幅数组,清除定时器 */
if (n==shockNum.length) {
clearInterval(timer2)
}
},20);
} // 调整时间的样式,个位数前面加“0”
function timeStyle(num){
if (num < 10) {
return "0"+num;
}
return num+"";
}
</script>
</html>
效果:

原生JS会跳动的电子表的更多相关文章
- 用原生js写一个"多动症"的简历
用原生js写一个"多动症"的简历 预览地址源码地址 最近在知乎上看到@方应杭用vue写了一个会动的简历,觉得挺好玩的,研究一下其实现思路,决定试试用原生js来实现. 会动的简历实现 ...
- 原生JS封装Ajax插件(同域&&jsonp跨域)
抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...
- 常用原生JS方法总结(兼容性写法)
经常会用到原生JS来写前端...但是原生JS的一些方法在适应各个浏览器的时候写法有的也不怎么一样的... 今天下班有点累... 就来总结一下简单的东西吧…… 备注:一下的方法都是包裹在一个EventU ...
- 原生JS实现"旋转木马"效果的图片轮播插件
一.写在最前面 最近都忙一些杂七杂八的事情,复习软考.研读经典...好像都好久没写过博客了... 我自己写过三个图片轮播,一个是简单的原生JS实现的,没有什么动画效果的,一个是结合JQuery实现的, ...
- 再谈React.js实现原生js拖拽效果
前几天写的那个拖拽,自己留下的疑问...这次在热心博友的提示下又修正了一些小小的bug,也加了拖拽的边缘检测部分...就再聊聊拖拽吧 一.不要直接操作dom元素 react中使用了虚拟dom的概念,目 ...
- React.js实现原生js拖拽效果及思考
一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...
- 原生JS实现全屏切换以及导航栏滑动隐藏及显示——重构前
思路分析: 向后滚动鼠标滚轮,页面向下全屏切换:向前滚动滚轮,页面向上全屏切换.切换过程为动画效果. 第一屏时,导航栏固定在页面顶部,切换到第二屏时,导航条向左滑动隐藏.切换回第一屏时,导航栏向右滑动 ...
- 原生js实现autocomplete插件
在实际的项目中,能用别人写好的插件实现相关功能是最好不过,为了节约时间成本,因为有的项目比较紧急,没充分时间让你自己来写,即便写了,你还要花大量时间调试兼容性.但是出于学习的目的,你可以利用闲暇时间, ...
- 原生js封装ajax:传json,str,excel文件上传表单提交
由于项目中需要在提交ajax前设置header信息,jquery的ajax实现不了,我们自己封装几个常用的ajax方法. jQuery的ajax普通封装 var ajaxFn = function(u ...
随机推荐
- 最好用的Unity版本控制工具
自从来到现在的公司,负责Unity组开发以来,尝试了各种版本控制工具.从一开始的TortoiseSVN,到后来为了追求逼格使用Git,尝试了Github客户端和SourceTree,发现都有各种不爽. ...
- JavaScript 函数
JavaScript 函数 介绍:函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.嗯,就像Java中封装的方法一样. 将脚本编写为函数,就可以避免页面载入时执行该脚本. 函数包含着一些代码 ...
- (八)数据呈现——一图胜千言<完结>
数据分析师就像厨师一样.厨师的工作有5步:下单.备料.切配.烹饪.打荷.数据分析师的工作也有5步.呈现数据就好像打荷.厨师在把菜肴端给客人之前要做盘饰美化,让菜肴精致美观,这个工作就是打荷.同样,数据 ...
- 自制xml实现SQL动态参数配置
此文章是基于 搭建SpringMVC+Spring+Hibernate平台 一. 准备工作 1. 点击此找到并下载 commons-digester3-3.2.jar 2. 点击此找到并下载 comm ...
- Android使用最小宽度限定符时最小宽度的计算
Android开发中最头疼的问题之一就是兼容不同尺寸和分辨率的设备.这里推荐一篇总结的比较完整的<Android开发:最全面.最易懂的Android屏幕适配解决方案>.这篇文章对屏幕兼容的 ...
- apache下htaccess不起作用,linux,windows详解
可能出现下面这三种的错误可能性: 第一种:启用 rewrite 和 .htaccess 设置 rewrite设置:找到apache的配置文件httpd.conf文件,找到:#LoadModule re ...
- [python]python try异常处理机制
#python的try语句有两种风格 #一:种是处理异常(try/except/else) #二:种是无论是否发生异常都将执行最后的代码(try/finally) try/except/else风格 ...
- #id+变量
"#id"在解析的时候看成是一个整体字符串或者是一个具体的selector了,只有写成"#"+id,这是才会在解析时把id变量的值进行替换成被赋予的变量的值.链 ...
- 将HTML5封装成android应用APK文件的几种方法
越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...
- .net core 源码解析-web app是如何启动并接收处理请求(二) kestrel的启动
上篇讲到.net core web app是如何启动并接受请求的,下面接着探索kestrel server是如何完成此任务的. 1.kestrel server的入口KestrelServer.Sta ...