CSS3 Animation实现加载动画
2017-12-18 20:29
519 查看
利用CSS3中的
animation,可以实现很多很炫的效果。今天就来利用
animation属性完成如上图所示的加载效果。
1 基本构图
首先来完成基本的构图:可以将上述图形解析为四部分:
外部矩形
左侧红色矩形
右下部黄色矩形
右上角白色矩形
划清图形结构后,可以完成基本页面绘制:
<style> div { box-sizing: border-box; } .logo { width: 250px; height: 250px; margin: 10px auto; position: relative; padding: 4px; } .red { position: absolute; left: 0; top: 0; width: 25%; height: 100%; background: red; border-right: 4px solid black; } .yellow { position: absolute; left: 25%; right:0; bottom: 0; height: 50%; background: yellow; border-top: 4px solid black; } .white { position: absolute; right:0; top: 0; height: 50%; width: 25%; background: white; border-left: 4px solid black; } </style> <body> <div class="logo"> <div class="red"></div> <div class="yellow"></div> <div class="white"></div> </div> </body>
可以看出,外部矩形的边框并没有绘制。具体原因暂且按下不表,后面会详细介绍。
2 动画分析
首先来看下,这里的动画总共分为7部分:四边边框出现
红色矩形出现
黄色矩形出现
白色矩形出现
后面三个矩形出现相对比较容易,难的是四个四边边框的动画效果。由于同侧边框(左右边框/上线边框)并不是同步出现,单纯靠一个矩形的伸缩无法实现,所以至少要依赖两个矩形,这时
::after
::before两个元素正好可以派上用场:
.logo::before, .logo::after { position: absolute; width: 100%; height: 100%; content: ''; border: 4px solid transparent; box-sizing: border-box; } .logo::before { z-index: 1; /*before在所有元素最前面,所以会被覆盖,加上z-index*/ top: 0px; left: 0px; animation: border-before 9s infinite; animation-direction: alternate; animation-timing-function: linear; } .logo::after { right: 0px; bottom: 0px; animation: border-after 9s infinite; animation-direction: alternate; animation-timing-function: linear; }
3 边框动画
接下来就可以利用关键帧来实现边框动画了:@keyframes border-before { 0% { width: 0; height: 0; border-left-color: black; } 11% { height: 100%; width: 0; border-bottom-color: transparent; /*在25% - 50% 的过程中,boder-bottom-color变成黑色,默认是在25%-50%过程开始是执行,可以通过step设置*/ } 22%, 100% { height: 100%; width: 100%; border-left-color: black; border-bottom-color: black; } } @keyframes border-after { 0%, 22% { width: 0; height: 0; border-top-color: transparent; border-right-color: transparent; } 33% { width: 0; height: 100%; border-right-color: black; border-top-color: transparent; } 44%, 100% { height: 100%; width: 100%; border-top-color: black; border-right-color: black; } }
4 内部矩形动画
接下来内部矩形的动画,相对就更简单了:.red { position: absolute; left: 0; top: 0; width: 25%; height: 100%; background: red; border-right: 4px solid black; animation: redmove 9s infinite; animation-timing-function: linear; animation-direction: alternate; } @keyframes redmove { 0%, 44% { width: 0; opacity: 0; } 44.01% { opacity: 1; } 55%, 100% { width: 25%; opacity: 1; } } .yellow { position: absolute; left: 25%; right:0; bottom: 0; height: 50%; background: yellow; border-top: 4px solid black; animation: moveyellow 9s infinite; animation-timing-function: linear; animation-direction: alternate; } @keyframes moveyellow { 0%, 55% { height: 0; opacity: 0; } 55.01% { opacity: 1; } 66%, 100% { height: 50%; } } .white { position: absolute; right:0; top: 0; height: 50%; width: 25%; background: white; border-left: 4px solid black; animation: movewhite 9s infinite; animation-direction: alternate; animation-timing-function: linear; } @keyframes movewhite { 0%, 66% { width: 0%; opacity: 0; } 66.01% { opacity: 1; } 77%, 100% { width: 25%; } }
相关文章推荐
- 纯css3实现的win8加载动画
- 一款纯css3实现的动画加载导航
- CSS3 动画实现 animation 和 transition 比较
- Android下Animation动画的使用 及 Volley加载图片动画实现
- css3实现圆环加载进度条动画
- CSS3实现的图片加载动画效果
- 几行css3代码实现超炫加载动画
- 绘图与动画之使用CAKeyframeAnimation实现仿WP水滴加载动画
- 纯css3实现的动画加载条
- 使用 CSS3 实现超炫的 Loading(加载)动画效果
- CSS3实现的图片加载动画效果
- html+css3实现简单加载动画,loading实现
- 使用 CSS3 实现超炫的 Loading(加载)动画效果
- 使用 CSS3 实现超炫的 Loading(加载)动画效果
- 使用 CSS3 实现超炫的 Loading(加载)动画效果
- CSS3动画animation实现云彩向左滚动
- 纯css3实现的动画加载条
- css3实现三种不同的loading加载动画效果
- css3 使用animation实现动画效果