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