红绿灯????——CSS 动画

栏目: CSS · 发布时间: 6年前

内容简介:今天给大家分享一个很简单有趣的红绿灯演示动画,效果图如下:乍一看你可能会觉得纯CSS动画可能做不到,实际上知道了原理还是比较简单的。首先这里有3盏灯,我们为每一盏灯写了一个

今天给大家分享一个很简单有趣的红绿灯演示动画,效果图如下:

红绿灯????——CSS 动画

乍一看你可能会觉得纯CSS动画可能做不到,实际上知道了原理还是比较简单的。

首先这里有3盏灯,我们为每一盏灯写了一个 animation

<div class="traffic-light">
  <div class="light red"></div>
  <div class="light amber"></div>
  <div class="light green"></div>
</div>
复制代码
.red {
  animation: red 10s linear infinite;
}
.amber {
  animation: amber 10s linear infinite;
}
.green {
  animation: green 10s linear infinite;
}
复制代码

从上面样式里看出,每盏灯的 animation 持续时间都是10s,那动画不断循环播放的时候,它们之间就会一直保持同步的时间关系。

参照下面的图,从功能出发,很容易理解3盏灯的动画之间的逻辑关系(在这里逻辑关系就是指的它们之间的时间关系)

红绿灯????——CSS 动画

从图中看,一共分5个阶段或者说5个步骤,在每个阶段,不同的灯处于 on 或者 off 的状态。那么我们很明显就是将0% - 100%的时间跨度分成5份,每20%为一个状态,设置不同状态下的参数。

我们从红灯开始看。0%-20% 和 20%-40%,这两个阶段红灯一直亮的,其余的时间都是黑的。那我们可以这么设置:

@keyframes red {
  0% {
    background: black;
  }
  2%, 40% {
    background-color: red;
  }
  42%, 100% {
    background: black;
  }
}
复制代码

这里有2%的间隙,是为了让灯看起来有点渐变的效果。可以按照20%``40%去写

同理,黄灯是20%-40%和80%-100%亮,其余时间不亮。这里也加了2%的间隙。

@keyframes amber {
  0%, 20% {
    background: black;
  }
  22%, 40% {
    background: #FF7E00;
  }
  42%, 80% {
    background: black;
  }
  82%, 100% {
    background: #FF7E00;
  }
}
复制代码

绿灯也很简单,按照图上显示的,来设置它。

@keyframes green {
  0%, 40% {
    background: black;
  }
  42%, 80% {
    background: green;
  }
  82%, 100% {
    background: black;
  }
}
复制代码

最后就大功告成了!当然你可以在这里看到源码。

(完)

本文作者 Thinker

本文如有错误之处,请留言,我会及时更正

觉得对您有帮助的话就 点个赞收藏 吧!

欢迎转载或分享,转载时请注明出处

阅读原文


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Excel图表之道

Excel图表之道

刘万祥 / 电子工业出版社 / 2010年4月 / 59.00元

本书介绍作者在实践工作中总结出来的一套“杂志级商务图表沟通方法”,告诉读者如何设计和制作达到杂志级质量的、专业有效的商务图表,作者对诸如《商业周刊》、《经济学人》等全球顶尖商业杂志上的精彩图表案例进行分析,给出其基于Excel的实现方法,包括数据地图、动态图表、仪表板等众多高级图表技巧。 本书提供大量图表模板源文件,包括详细的制作步骤,提供网上下载。提供博客支持。 本书定位于中高级Ex......一起来看看 《Excel图表之道》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具