<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<style>
.box {
width: 250px;
height: 52px;
padding: 15px 30px;
border: 2px solid #ccc;
border-radius: 16px;
margin: 0 auto;
}
.box .count {
width: 60px;
color: #666;
font-size: 280%;
line-height: 50px;
padding-left: 6px;
margin-left: 5px;
border: 1px solid #fff
}
.box div {
margin-left: 5px;
float: left;
width: 50px;
height: 50px;
border-radius: 50px;
border: 1px solid #666;
}
.gray {
background-color: #eee;
}
.red {
background-color: red;
}
.yellow {
background-color: yellow;
}
.green {
background-color: #26ff00;
}
</style>
<body>
<div class="box">
<div id="red"></div>
<div id="yellow"></div>
<div id="green"></div>
<div class="count" id="count"></div>
</div>
</body>
<script>
// 获取红、黄、绿灯以及倒计时的元素对象
var lamp = {
red: {
obj: document.getElementById('red'),
timeout: 30,
style: ['red', 'gray', 'gray'],
next: 'green'
},
yellow: {
obj: document.getElementById('yellow'),
timeout: 5,
style: ['gray', 'yellow', 'gray'],
next: 'red'
},
green: {
obj: document.getElementById('green'),
timeout: 35,
style: ['gray', 'gray', 'green'],
next: 'yellow'
},
changeStyle(style) {
this.red.obj.className = style[0];
this.yellow.obj.className = style[1];
this.green.obj.className = style[2];
}
};
var count = {
obj: document.getElementById('count'),
change: function(num) {
this.obj.innerHTML = (num < 10) ? ('0' + num) : num;
}
};
var now = lamp.green;
var timeout = now.timeout;
lamp.changeStyle(now.style);
count.change(timeout);
setInterval(function() {
if(--timeout <= 0) {
now = lamp[now.next];
timeout = now.timeout;
lamp.changeStyle(now.style);
}
count.change(timeout);
}, 1000);
</script>
</html>

最新文章

  1. Redis学习笔记3-Redis5个可执行程序命令的使用
  2. printf函数
  3. alibaba-dexposed 原理解析
  4. Bootstrap~多级导航(级联导航)的实现
  5. Objective-C基础笔记一
  6. 数据库,inner join,left join right join 的区别
  7. DataGridView显示行号
  8. Unity3d在线游戏Socket通讯
  9. flashfxp 数据socket错误 连接已超时 filezilla
  10. c++ 快速读入输出
  11. 【PMP】项目的定义和特点
  12. es6(9)--Symbol
  13. SPOJ QTREE2 (LCA - 倍增 在线)
  14. innodb next-key lock引发的死锁
  15. Scrum Meeting 7 -2014.11.13
  16. Eclipse+tomcat+axis2进行web service部署
  17. 【刷题】BZOJ 4830 [Hnoi2017]抛硬币
  18. 牛客练习赛16 A 字典序最大的子序列【贪心】
  19. AutoIT V3如何修改字体
  20. Angular——tab切换案例

热门文章

  1. MyBatis项目实战 快速将MySQL转换成Oracle语句
  2. Don’t Repeat Yourself,Repeat Yourself
  3. Django之models高级进阶技术详解
  4. 【转】面向GC的Java编程
  5. try catch 自定义捕获异常
  6. Asp.Net Core下的开源任务调度平台ScheduleMaster—快速上手
  7. Android通过子线程更新UI的几种方式
  8. 逆元(inv)
  9. java反序列化php序列化的对象
  10. hdu6703 线段树+set