实现一个红绿灯效果。用圆形文本框显示红绿灯 每次红灯亮10秒,黄灯亮3秒,绿灯亮8秒,并在红绿灯文本框右侧显示倒计时。 用JS代码。
时间: 2024-10-09 13:07:25 浏览: 50
实现一个简单的红绿灯动画效果,我们可以利用JavaScript结合HTML和CSS创建一个动态的计时器。首先,我们创建一个基本的HTML结构,包含两个文本元素(一个用于红绿灯状态,另一个用于显示倒计时),以及一些CSS样式来设置基本外观。
```html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<style>
.light {
display: inline-block;
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 10px;
}
.red { background-color: red; }
.yellow { background-color: yellow; }
.green { background-color: green; }
#timer {
font-size: 24px;
color: white;
}
</style>
</head>
<body>
<div id="trafficLight" class="light red">红</div>
<div id="timer"></div>
<script>
let light = document.getElementById('trafficLight');
let timerElement = document.getElementById('timer');
const cycleDuration = 10 + 3 + 8; // 总周期时间 (红+黄+绿)
let status = 'red';
let countdown = cycleDuration;
function changeLightColor() {
switch (status) {
case 'red':
light.classList.remove('red', 'yellow', 'green');
light.classList.add('red');
break;
case 'yellow':
light.classList.remove('red', 'yellow', 'green');
light.classList.add('yellow');
break;
case 'green':
light.classList.remove('red', 'yellow', 'green');
light.classList.add('green');
break;
}
}
function updateTimer() {
if (countdown === 0) {
status = (status === 'red') ? 'yellow' : 'green'; // 状态切换
countdown = cycleDuration;
} else {
countdown--;
timerElement.textContent = `剩余 ${countdown} 秒`;
}
}
setInterval(changeLightColor, 1000);
setInterval(updateTimer, 1000);
// 设置初始颜色和倒计时
changeLightColor();
updateTimer();
</script>
</body>
</html>
```
这个代码会创建一个红绿灯效果,红灯亮10秒,黄灯亮3秒,绿灯亮8秒。`changeLightColor`函数负责改变灯的颜色,`updateTimer`函数更新倒计时。每隔一秒,这两个定时器就会被执行一次。
阅读全文