返回

红绿灯 CSS 动画 —— 精彩绝伦的视觉盛宴

前端

CSS 动画技术巧妙呈现红绿灯:引人入胜的视觉效果

简介

红绿灯是城市景观中不可或缺的一部分,它们引导行人安全穿越道路,确保交通顺畅。借助 CSS 动画技术的蓬勃发展,我们现在可以轻松地将红绿灯的动态变化搬上网页。本文将深入探究如何运用 CSS 动画技术,创造一个逼真且引人入胜的红绿灯动画效果。

原理揭秘

乍一看,您可能会对纯 CSS 动画能否实现红绿灯效果存疑。但深入了解背后的原理,您就会发现这其实非常简单。

样式剖析

.traffic-light {
  width: 200px;
  height: 300px;
  margin: 0 auto;
  position: relative;
}

.traffic-light__bulb {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  position: absolute;
  left: 50%;
  transform: translate(-50%, -50%);
}

.traffic-light__bulb--red {
  background-color: #FF0000;
  animation: red-light 10s infinite;
}

.traffic-light__bulb--yellow {
  background-color: #FFFF00;
  animation: yellow-light 10s infinite;
}

.traffic-light__bulb--green {
  background-color: #00FF00;
  animation: green-light 10s infinite;
}

@keyframes red-light {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@keyframes yellow-light {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

@keyframes green-light {
  0% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

从样式中可以看出,每个灯的 animation 持续时间均为 10 秒,这意味着动画将持续循环播放。同时,它们之间的时序关系也保持同步。

动画共分为 5 个阶段:

  1. 红色灯亮起 :红色灯的 opacity 从 0 渐变成 1,表示灯亮。
  2. 红色灯熄灭,黄色灯亮起 :红色灯的 opacity 从 1 渐变成 0,熄灭;同时,黄色灯的 opacity 从 0 渐变成 1,亮起。
  3. 黄色灯熄灭,绿色灯亮起 :黄色灯的 opacity 从 1 渐变成 0,熄灭;同时,绿色灯的 opacity 从 0 渐变成 1,亮起。
  4. 绿色灯熄灭,红色灯亮起 :绿色灯的 opacity 从 1 渐变成 0,熄灭;同时,红色灯的 opacity 从 0 渐变成 1,亮起。
  5. 循环 :动画循环播放,从红色灯亮起开始,依次经过黄色灯亮起、绿色灯亮起、熄灭,再回到红色灯亮起。

步骤指南

在您的项目中应用这个红绿灯 CSS 动画效果,只需以下几个步骤:

  1. 创建 HTML 结构 :创建一个 HTML 文件,添加以下代码:
<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <div class="traffic-light">
    <div class="traffic-light__bulb traffic-light__bulb--red"></div>
    <div class="traffic-light__bulb traffic-light__bulb--yellow"></div>
    <div class="traffic-light__bulb traffic-light__bulb--green"></div>
  </div>
</body>
</html>
  1. 添加 CSS 样式 :创建一个 CSS 文件,添加文章开头提供的样式代码。

  2. 运行 HTML 文件 :在浏览器中打开 HTML 文件,即可看到红绿灯动画效果。

结语

CSS 动画技术不仅能实现简单的视觉效果,还能打造红绿灯这样复杂且逼真的动画。本文深入剖析了动画背后的原理,并提供了详细的步骤指南。希望它能帮助您掌握 CSS 动画技术,并将其应用到您的项目中。

常见问题解答

1. 如何修改动画时长?

通过更改 @keyframesanimation 的持续时间即可修改动画时长。

2. 如何添加交通灯杆?

可以通过绝对定位的 div 元素来添加交通灯杆。

3. 如何让动画暂停并响应用户交互?

可以通过 JavaScript 事件监听器控制动画的暂停和播放。

4. 如何在不中断动画循环的情况下添加额外的灯光?

可以通过添加新的 traffic-light__bulb 元素并为其编写自定义动画实现。

5. 如何优化动画性能?

可以使用诸如 transformopacity 等 CSS 属性,而不是 topleft,以提高动画性能。