实现方法
这是一组效果非常酷的纯CSS3炫酷预加载Loading指示器动画特效。这组loading指示器共6种效果,都是使用:before和:after伪元素,以及CSS帧动画来完成各种不同的预加载指示器动画。
使用方法
音频波形Loading动画
HTML结构
使用5个空的<span>元素,每一个代表一条波形柱子。
1
2
3
4
5
6
7
|
<
div
id
=
"preloader_1"
>
<
span
></
span
>
<
span
></
span
>
<
span
></
span
>
<
span
></
span
>
<
span
></
span
>
</
div
>
|
CSS样式
音频波形Loading动画效果通过使每一条音频波形柱子的高度从5像素变化到30像素来完成。每一个span元素都被沿Y轴向下移动15像素,使动画动中心开始。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#preloader_
1
{
position
:
relative
;
}
#preloader_
1
span{
display
:
block
;
bottom
:
0px
;
width
:
9px
;
height
:
5px
;
background
:
#9b59b6
;
position
:
absolute
;
animation: preloader_
1
1.5
s infinite ease-in-out;
}
#preloader_
1
span:nth-child(
2
){
left
:
11px
;
animation-delay: .
2
s;
}
#preloader_
1
span:nth-child(
3
){
left
:
22px
;
animation-delay: .
4
s;
}
#preloader_
1
span:nth-child(
4
){
left
:
33px
;
animation-delay: .
6
s;
}
#preloader_
1
span:nth-child(
5
){
left
:
44px
;
animation-delay: .
8
s;
}
@keyframes preloader_
1
{
0%
{
height
:
5px
;transform:translateY(
0px
);
background
:
#9b59b6
;}
25%
{
height
:
30px
;transform:translateY(
15px
);
background
:
#3498db
;}
50%
{
height
:
5px
;transform:translateY(
0px
);
background
:
#9b59b6
;}
100%
{
height
:
5px
;transform:translateY(
0px
);
background
:
#9b59b6
;}
}
|
通过分别为每一个span元素设置0.2秒的animation-delay动画延迟时间,使它们依次产生高度变化的动画效果。
圆形变矩形Loading动画
HTML结构
圆形变矩形Loading动画使用4个空的<span>元素,每一个代表一个圆形/矩形。
1
2
3
4
5
6
|
<
div
id
=
"preloader_2"
>
<
span
></
span
>
<
span
></
span
>
<
span
></
span
>
<
span
></
span
>
</
div
>
|
CSS样式
该loading指示器动画通过修改border-radius属性来实现。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#preloader_
2
{
position
:
relative
;
left
:
50%
;
width
:
40px
;
height
:
40px
; }
#preloader_
2
span {
display
:
block
;
bottom
:
0px
;
width
:
20px
;
height
:
20px
;
background
:
#9b59b6
;
position
:
absolute
; }
#preloader_
2
span:nth-child(
1
) { animation: preloader_
2
_
1
1.5
s infinite ease-in-out; }
#preloader_
2
span:nth-child(
2
) {
left
:
20px
; animation: preloader_
2
_
2
1.5
s infinite ease-in-out; }
#preloader_
2
span:nth-child(
3
) {
top
:
0px
; animation: preloader_
2
_
3
1.5
s infinite ease-in-out; }
#preloader_
2
span:nth-child(
4
) {
top
:
0px
;
left
:
20px
; animation: preloader_
2
_
4
1.5
s infinite ease-in-out; }
@-keyframes preloader_
2
_
1
{
0%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
0
deg);
border-radius:
0px
;
}
50%
{
-transform: translateX(
-20px
) translateY(
-10px
) rotate(
-180
deg);
border-radius:
20px
;
background
:
#3498db
;
}
80%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
-360
deg);
border-radius:
0px
;
}
100%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
-360
deg);
border-radius:
0px
;
}
}
@-keyframes preloader_
2
_
2
{
0%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
0
deg);
border-radius:
0px
;
}
50%
{
-transform: translateX(
20px
) translateY(
-10px
) rotate(
180
deg);
border-radius:
20px
;
background
:
#f1c40f
;
}
80%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
360
deg);
border-radius:
0px
;
}
100%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
360
deg);
border-radius:
0px
;
}
}
@-keyframes preloader_
2
_
3
{
0%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
0
deg);
border-radius:
0px
;
}
50%
{
-transform: translateX(
-20px
) translateY(
10px
) rotate(
-180
deg);
border-radius:
20px
;
background
:
#2ecc71
;
}
80%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
-360
deg);
border-radius:
0px
;
}
100%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
-360
deg);
border-radius:
0px
;
}
}
@-keyframes preloader_
2
_
4
{
0%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
0
deg);
border-radius:
0px
;
}
50%
{
-transform: translateX(
20px
) translateY(
10px
) rotate(
180
deg);
border-radius:
20px
;
background
:
#e74c3c
;
}
80%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
360
deg);
border-radius:
0px
;
}
100%
{
-transform: translateX(
0px
) translateY(
0px
) rotate(
360
deg);
border-radius:
0px
;
}
}
|
交叉图形变换Loading动画
HTML结构
该loading动画使用div元素的:before和:after为元素来制作。圆形变方形的动画通用是通过修改border-radius属性来实现。
1
|
<
div
id
=
"preloader_3"
></
div
>
|
CSS样式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#preloader_
3
{
position
:
relative
;
}
#preloader_
3:
before{
width
:
20px
;
height
:
20px
;
border-radius:
20px
;
background
:
blue
;
content
:
''
;
position
:
absolute
;
background
:
#9b59b6
;
animation: preloader_
3
_before
1.5
s infinite ease-in-out;
}
#preloader_
3:
after{
width
:
20px
;
height
:
20px
;
border-radius:
20px
;
background
:
blue
;
content
:
''
;
position
:
absolute
;
background
:
#2ecc71
;
left
:
22px
;
animation: preloader_
3
_after
1.5
s infinite ease-in-out;
}
@keyframes preloader_
3
_before {
0%
{transform: translateX(
0px
) rotate(
0
deg)}
50%
{transform: translateX(
50px
) scale(
1.2
) rotate(
260
deg);
background
:
#2ecc71
;border-radius:
0px
;}
100%
{transform: translateX(
0px
) rotate(
0
deg)}
}
@keyframes preloader_
3
_after {
0%
{transform: translateX(
0px
)}
50%
{transform: translateX(
-50px
) scale(
1.2
) rotate(
-260
deg);
background
:
#9b59b6
;border-radius:
0px
;}
100%
{transform: translateX(
0px
)}
}
|
蛇形Loading动画
HTML结构
该loading动画使用div元素的:before和:after为元素来制作。圆形变方形的动画通用是通过修改border-radius属性来实现。
1
2
3
4
5
6
7
|
<
div
id
=
"preloader_4"
>
<
span
></
span
>
<
span
></
span
>
<
span
></
span
>
<
span
></
span
>
<
span
></
span
>
</
div
>
|
CSS样式
该动画通过修改每一个span元素的Y轴位置,使它们下移10个像素,并使它们的颜色从蓝色变为黄色。阴影效果则是修改box-shadow的尺寸来完成。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#preloader_
4
{
position
:
relative
;
}
#preloader_
4
span{
position
:
absolute
;
width
:
20px
;
height
:
20px
;
background
:
#3498db
;
opacity:
0.5
;
border-radius:
20px
;
-animation: preloader_
4
1
s infinite ease-in-out;
}
#preloader_
4
span:nth-child(
2
){
left
:
20px
;
animation-delay: .
2
s;
}
#preloader_
4
span:nth-child(
3
){
left
:
40px
;
animation-delay: .
4
s;
}
#preloader_
4
span:nth-child(
4
){
left
:
60px
;
animation-delay: .
6
s;
}
#preloader_
4
span:nth-child(
5
){
left
:
80px
;
animation-delay: .
8
s;
}
@keyframes preloader_
4
{
0%
{
opacity:
0.3
;
transform:translateY(
0px
);
box-shadow:
0px
0px
3px
rgba(
0
,
0
,
0
,
0.1
);}
50%
{
opacity:
1
;
transform: translateY(
-10px
);
background
:
#f1c40f
;
box-shadow:
0px
20px
3px
rgba(
0
,
0
,
0
,
0.05
);}
100%
{
opacity:
0.3
;
transform:translateY(
0px
);
box-shadow:
0px
0px
3px
rgba(
0
,
0
,
0
,
0.1
);}
}
|
旋转轮盘Loading动画
HTML结构
该loading动画使用div元素来制作中心的圆形,并使用div元素的:after伪元素来制作两条旋转线效果。
1
|
<
div
id
=
"preloader_5"
></
div
>
|
CSS样式
两条旋转线使用:after伪元素来制作,通过给它设置50像素的顶部和底部border-radius俩创建这两条线。动画效果添加在div元素上,修改它的颜色以及通过transform: rotate()来使它进行旋转。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#preloader
5
{
position
:
relative
;
width
:
30px
;
|