基于HTML、CSS与JavaScript实现简易交通信号灯
作者:页面旅途时间:2026-10-23 22:37:38浏览:524
本文详细介绍如何利用HTML构建容器与灯位,通过CSS定义灯光样式与布局,并核心使用JavaScript的setTimeout与setInterval定时器实现红黄绿灯的自动切换逻辑。代码包含完整的DOM元素获取、类名切换及循环执行机制,适合前端初学者理解定时器与DOM交互的实际应用。
HTML结构搭建
首先准备HTML结构代码:
在页面中创建一个div容器,并在该容器内部设置3个span元素,分别代表红、黄、绿三种颜色的灯位。
<body>
<div id="i1">
<span class="light red_light"></span>
<span class="light yellow_light"></span>
<span class="light green_light"></span>
</div>
接着编写CSS样式代码:
CSS样式定义
<style>
.red_light {
width: 200px;
height: 200px;
border-radius: 50%;
margin-left: 10px;
display: inline-block;
background-color: red;
}
.yellow_light {
width: 200px;
height: 200px;
border-radius: 50%;
margin-left: 10px;
display: inline-block;
background-color: yellow;
}
.green_light {
width: 200px;
height: 200px;
border-radius: 50%;
margin-left: 10px;
display: inline-block;
background-color: green;
}
.light {
width: 200px;
height: 200px;
background-color: #777777;
border-radius: 50%;
margin-left: 10px;
display: inline-block;
}
#i1 {
width: 660px;
height: 200px;
margin: 0 auto;
border: black 10px solid;
}
</style>
然后编写JavaScript逻辑代码:
JavaScript逻辑实现
<script>
function l() {
r_l()//红灯亮
setTimeout(y_l, 1000);//黄灯一秒后亮
setTimeout(r_l, 1000);//黄灯亮的同时关闭红灯
setTimeout(g_l, 2000);//绿灯两秒后亮
setTimeout(y_l, 2000);//绿灯亮,黄灯熄
setTimeout(g_l, 3000);//三秒后,红灯熄
}
function r_l() {
//获取红灯
let r = document.getElementsByClassName('red_light')[0];
//toggle函数,如果有该属性,则去除,没有该属性,则添加
r.classList.toggle('light')
}
function g_l() {
//同上
let r = document.getElementsByClassName('green_light')[0];
r.classList.toggle('light')
}
function y_l() {
//同上
let r = document.getElementsByClassName('yellow_light')[0];
r.classList.toggle('light')
}
//红灯10秒,黄灯2秒,绿灯10秒
l(); //先执行函数
window.onload = function () {
t1 = setInterval(l, 3000)//每隔三秒重复执行函数
};
//每隔三秒的时间是因为每个灯各闪一秒,如果改变了灯的持续时间,循环时间也要修改
</script>
运行效果如下:

以上就是利用js实现简易红绿灯的详细内容,更多关于js 实现红绿灯的资料请关注本站其它相关文章!
作者最新文章
JS监听滚动事件:回到顶部按钮的显示与隐藏逻辑
2026-11-05 16:19:37
JavaScript怎么读写LocalStorage与SessionStorage
2026-11-05 15:40:11
anime.js 与 GSAP 对比:轻量级项目该怎么选择动画库
2026-11-05 11:24:55
flv.js 与 hls.js 在直播场景下的选型对比
2026-11-05 08:18:52
JavaScript能做什么?前端开发中的作用与应用场景解析
2026-11-04 23:17:54
