内容简介:今天给大家分享一个很简单有趣的红绿灯演示动画,效果图如下:乍一看你可能会觉得纯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动画之一:视图动画
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web全栈工程师的自我修养
余果 / 人民邮电出版社 / 2015-9-1 / 49.00
全栈工程师正成为 IT 行业的新秀,论是上市互联网公司还是创业公司,都对全栈工程师青睐有加。本书作者是腾讯公司高级工程师,在前端、后端和APP开发方面都有丰富的经验,在本书中分享了全栈工程师的技能要求、核心竞争力、未来发展方向、对移动端的思考。除此之外,本书还详细记录了作者从零开始、学习成长的心路历程。 本书内容全面,客观务实,适合互联网行业新人、程序员,以及期待技术转型的从业者阅读参考。一起来看看 《Web全栈工程师的自我修养》 这本书的介绍吧!