内容简介:今天给大家分享一个很简单有趣的红绿灯演示动画,效果图如下:乍一看你可能会觉得纯CSS动画可能做不到,实际上知道了原理还是比较简单的。首先这里有3盏灯,我们为每一盏灯写了一个
今天给大家分享一个很简单有趣的红绿灯演示动画,效果图如下:
乍一看你可能会觉得纯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盏灯的动画之间的逻辑关系(在这里逻辑关系就是指的它们之间的时间关系)
从图中看,一共分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
本文如有错误之处,请留言,我会及时更正
觉得对您有帮助的话就 点个赞 或 收藏 吧!
欢迎转载或分享,转载时请注明出处
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 利用CNN进行红绿灯识别
- 【Android 动画】动画详解之属性动画(三)
- 【Android 动画】动画详解之属性动画(五)
- Flutter 动画全解析(动画四要素、动画组件、隐式动画组件原理等)
- 【Android 动画】动画详解之补间动画(一)
- 系统学习iOS动画之一:视图动画
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Game Engine Architecture, Second Edition
Jason Gregory / A K Peters/CRC Press / 2014-8-15 / USD 69.95
A 2010 CHOICE outstanding academic title, this updated book covers the theory and practice of game engine software development. It explains practical concepts and techniques used by real game studios,......一起来看看 《Game Engine Architecture, Second Edition》 这本书的介绍吧!