CSS3 Animation实现加载动画

简介: 利用CSS Animation属性实现加载动画

fab41d5c7ccf17ed1d2f0014274e0280.gif

利用CSS3中的animation,可以实现很多很炫的效果。今天就来利用animation属性完成如上图所示的加载效果。

1 基本构图

首先来完成基本的构图:

2bee0c74efd3ce5a43977b569a7fac77.png

可以将上述图形解析为四部分:

  • 外部矩形
  • 左侧红色矩形
  • 右下部黄色矩形
  • 右上角白色矩形

划清图形结构后,可以完成基本页面绘制:

<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>

loading1.png

可以看出,外部矩形的边框并没有绘制。具体原因暂且按下不表,后面会详细介绍。

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%;
  }
}
相关文章
|
10天前
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
59 34
|
27天前
jQuery+CSS3实现404背景游戏动画源码
jQuery+CSS3实现404背景游戏动画源码
50 22
|
3月前
|
移动开发 前端开发 JavaScript
除了 CSS3,还有哪些技术可以实现动画效果?
除了 CSS3,还有哪些技术可以实现动画效果?
152 63
|
3月前
纯css3实现的百分比渐变进度条加载动画源码
纯css3实现的百分比渐变进度条加载动画特效源码
66 31
|
4月前
|
前端开发 搜索推荐 UED
实现 CSS 动画效果的兼容性
【10月更文挑战第16天】实现 CSS 动画效果的兼容性需要对不同浏览器的特性有深入的了解,并采取适当的策略和方法。通过不断的实践和优化,你可以在各种浏览器上创造出流畅、美观且兼容的动画效果,为用户带来更好的体验。在实际开发中,要密切关注浏览器的发展动态,及时掌握最新的兼容性技巧和解决方案,以确保你的动画设计能够在广泛的用户群体中得到良好的呈现。
129 58
|
2月前
|
Web App开发 移动开发 JavaScript
纯CSS3+SVG实现的节日庆祝五彩纸屑动画效果源码
这是一款基于纯CSS3+SVG实现的节日庆祝五彩纸屑动画效果源码。画面中左下角是一个圆锥形礼炮卡通效果,呈现出节日庆祝时礼花爆破、五彩纸屑纷飞的动画特效。整体动画效果采用纯css3+svg实现,没有引入任何外部图形或js脚本元素。建议使用支持HTML5与css3效果较好的火狐(Firefox)或谷歌(Chrome)等浏览器预览本源码。
60 6
|
3月前
|
前端开发 JavaScript UED
CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画
本文探讨了CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画,这些效果增强了页面的吸引力和互动性。视差滚动通过不同层次元素的差异化移动,增加了页面的深度感和沉浸感。文章还讨论了实现方法、性能优化及案例分析,旨在为设计师和开发者提供实用指导。
87 7
|
3月前
|
前端开发 UED 开发者
CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度
本文探讨了CSS Sprites和图标字体在网页图标加载优化中的应用。CSS Sprites通过合并多图标减少HTTP请求,提升加载速度;图标字体则以字体形式呈现图标,便于调整样式。文章分析了两者的优缺点及应用场景,并提供了应用技巧和注意事项,旨在帮助开发者提升页面性能,改善用户体验。
43 5
|
3月前
CSS3制作的聚光灯下倒影文字选装动画特效源码
CSS3聚光灯下倒影文字特效是一段基于CSS3实现的聚光灯下带倒影的文字旋转动画效果代码,具有真实的视觉感,同时文字还会在旋转过程中显示出灯光的反射效果,很有意思,欢迎对此段代码感兴趣的朋友前来下载使用。
37 6
|
3月前
纯css3加载loading发光变色动画代码
纯css3加载loading发光变色动画特效代码是一款基于css3 keyframes属性实现的发光变色圆点串联旋转loading加载动画
31 2

热门文章

最新文章