CSS 动画实战:创建一个漂亮的加载动画
2017-09-05 16:23
676 查看
这篇文章,用一个实例来讲下用伪元素和CSS Animation来创建一个漂亮的加载动画。
首先来看下,要实现的动画效果:
先来分析下,这个动画效果是由哪几个动画组成:
1、线段依次出现。
2、然后红色、橙色和白色矩形依次出现。
3、这些矩形出现之后,然后消失。
4、线段消失。
这里我们只需要实现1和2动画效果。后面的3和4,只需要在1和2的基础上使用animation-direction: alternate;这个属性就可以实现了,这个属性会倒着播放动画效果。然后使用animation-iteration-count: infinite;是动画循环来播放就实现了我们要实现的动画效果。
先来写基本的HTML结构:
CSS放在顶部,这样可以让图像能最快的渲染出来,呈现给用户。
接下来我们一步一步来实现这个动画效果。第一步就是先来实现这个加载效果的静态UI。
div.logo这个div作为父级元素用来包裹三个矩形,矩形分别用它们所属的颜色来命名类名:
这里我们使用绝对定位来实现矩形位置的摆放。
使用SCSS来实现这个布局:
最后就实现了这个Logo静态UI:
demo地址
跟上步骤,先来实现线段的动画效果。
CSS现在还不能直接对边线(border)做动画效果。所以,需要找一个其它的方法来实现这个边线动画效果。
我们可以换种方式,比如我们可以把这个边线分成四条线段,使它们依次出现从而实现边线的动画效果。我们将使用两个伪元素来实现这个效果。
通过伪元素实现边线后,可以通过改变它们的高度(height)属性及葱0%到100%来实现动画效果。
我们先来用伪元素实现动画效果。div.logo::before定位在div.logo左上的位置,来实现顶部和右边的边线。div.logo::after用来实现底部和左边的边线。
下面是SCSS的代码:
通过改造,使用伪元素实现了边框的效果:
demo地址
先来创建第一个边线动画效果。
当然,在初始状态的时候,先要把边线的width和height都设置为0。然后使用关键帧分别把width和height设置为100%。
在改变width和height的时候,同时把颜色从透明改为黑色,这样边线的动画效果就实现了。
下面是代码:
依样画葫芦,重复这个步骤来实现另外边线的动画效果。效果如下:
demo地址
下面来实现矩形的动画效果。
要实现这个效果一个主要的挑战是每个动画效果的关键帧之间的衔接。我们需要合理的安排每一个关键帧动画出现的时机,从而完整的把整个动画效果衔接起来。
对于边线动画,每一个边线动画将花费25%的时间来呈现。边线动画完成后,然后再来呈现矩形的动画。这过程中,要花点时间去尝试,经过尝试,我们选择整个的动画时间是1.5秒,具体的动画所占时间比如下所示:
1、 25%的关键帧:顶部和右边的边线动画占的时间比。
2、25%到50%:关键帧是底部和左边的边线动画的时间。
3、50到65%:关键帧是红色矩形的动画。
4、65到80%:关键帧是橙色矩形的动画。
5、75到90%:关键帧是白色矩形的动画。
根据上面安排的时间,现在就可以来实现接下来的矩形动画了,通过改变矩形的透明度和宽度来实现:
其它矩形的动画通过同样的方式来实现,最后一个帅气漂亮的加载动画就实现了:
demo地址
OK,一个简单帅气漂亮的加载动画就完成了。
本文主要是从How to create a beautiful animated loader with nothing but CSS这篇文章整理而来,有删减,有疏漏或者理解不到位的地方,还请多多指教!
首先来看下,要实现的动画效果:
先来分析下,这个动画效果是由哪几个动画组成:
1、线段依次出现。
2、然后红色、橙色和白色矩形依次出现。
3、这些矩形出现之后,然后消失。
4、线段消失。
这里我们只需要实现1和2动画效果。后面的3和4,只需要在1和2的基础上使用animation-direction: alternate;这个属性就可以实现了,这个属性会倒着播放动画效果。然后使用animation-iteration-count: infinite;是动画循环来播放就实现了我们要实现的动画效果。
先来写基本的HTML结构:
实现静态的Logo
接下来我们一步一步来实现这个动画效果。第一步就是先来实现这个加载效果的静态UI。
div.logo这个div作为父级元素用来包裹三个矩形,矩形分别用它们所属的颜色来命名类名:
使用SCSS来实现这个布局:
demo地址
线段动画
跟上步骤,先来实现线段的动画效果。CSS现在还不能直接对边线(border)做动画效果。所以,需要找一个其它的方法来实现这个边线动画效果。
我们可以换种方式,比如我们可以把这个边线分成四条线段,使它们依次出现从而实现边线的动画效果。我们将使用两个伪元素来实现这个效果。
通过伪元素实现边线后,可以通过改变它们的高度(height)属性及葱0%到100%来实现动画效果。
我们先来用伪元素实现动画效果。div.logo::before定位在div.logo左上的位置,来实现顶部和右边的边线。div.logo::after用来实现底部和左边的边线。
下面是SCSS的代码:
demo地址
先来创建第一个边线动画效果。
当然,在初始状态的时候,先要把边线的width和height都设置为0。然后使用关键帧分别把width和height设置为100%。
在改变width和height的时候,同时把颜色从透明改为黑色,这样边线的动画效果就实现了。
下面是代码:
demo地址
矩形动画
下面来实现矩形的动画效果。要实现这个效果一个主要的挑战是每个动画效果的关键帧之间的衔接。我们需要合理的安排每一个关键帧动画出现的时机,从而完整的把整个动画效果衔接起来。
对于边线动画,每一个边线动画将花费25%的时间来呈现。边线动画完成后,然后再来呈现矩形的动画。这过程中,要花点时间去尝试,经过尝试,我们选择整个的动画时间是1.5秒,具体的动画所占时间比如下所示:
1、 25%的关键帧:顶部和右边的边线动画占的时间比。
2、25%到50%:关键帧是底部和左边的边线动画的时间。
3、50到65%:关键帧是红色矩形的动画。
4、65到80%:关键帧是橙色矩形的动画。
5、75到90%:关键帧是白色矩形的动画。
根据上面安排的时间,现在就可以来实现接下来的矩形动画了,通过改变矩形的透明度和宽度来实现:
demo地址
OK,一个简单帅气漂亮的加载动画就完成了。
本文主要是从How to create a beautiful animated loader with nothing but CSS这篇文章整理而来,有删减,有疏漏或者理解不到位的地方,还请多多指教!
相关文章推荐
- CSS动画实战:创建一个太极Loading图
- CSS动画实战:创建一个太极Loading图
- 一个简单的CSS加载动画
- 【转贴】如何利用CSS创建一个漂亮的按钮
- 如何用Swift创建一个复杂的加载动画
- 原生JS实战:分享一个首页进度加载动画!
- 一个漂亮的加载动画 BubbleView
- 收藏一个 漂亮的 Android加载中动画AVLoadingIndicatorView
- 比较漂亮的一个导航条的效果DIV+CSS
- 使用简单 好看的CSS加载动画源码
- CSS 动画指南: 原理和实战 (一)
- 1.Animation的使用 - 使用动画创建一个不同的登陆界面
- 好用的纯CSS加载动画-spinkit
- 如何判断一个DOM元素正在动画,一个CSS“阻塞”JS的例子
- 漂亮的加载等待动画,用纯CSS3制作
- 如何判断一个DOM元素正在动画,一个CSS“阻塞”JS的例子
- Javascript 创建一个动画元件的代码
- visual studio 2010 创建新项目时,提示无法找到项目模板的一个解决方案 或者 无法从项目模版中加载xxx文件
- 自定义View实战--实现一个清新美观的加载按钮
- 如何快速创建一个AJAX的"加载"的图片效果