Skip to content

Commit aa3b239

Browse files
committed
Add a new loading animation which called wave-dots
1 parent 8f893f4 commit aa3b239

File tree

1 file changed

+95
-1
lines changed

1 file changed

+95
-1
lines changed

src/components/InfiniteLoading.vue

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@
111111
.icon-loading{
112112
position: relative;
113113
border: 1px solid #999;
114+
animation: ease loading 1.5s infinite;
114115
&:before{
115116
@size: 6px;
116117
content: '';
@@ -126,6 +127,100 @@
126127
border-radius: 50%;
127128
}
128129
}
130+
.icon-wave-dots{
131+
position: relative;
132+
&:before{
133+
@size: 8px;
134+
@wave: -6px;
135+
@near-wave: -4px;
136+
@after-wave: 2px;
137+
@c-wave: #999;
138+
@c-near-wave: #bbb;
139+
content: '';
140+
position: absolute;
141+
top: 50%;
142+
left: 50%;
143+
margin-left: -@size/2;
144+
margin-top: -@size/2;
145+
width: @size;
146+
height: @size;
147+
background-color: @c-near-wave;
148+
border-radius: 50%;
149+
animation: linear wave-dots 2.8s infinite;
150+
@keyframes wave-dots{
151+
0%{
152+
box-shadow: -@size * 4 0 0 @c-near-wave,
153+
-@size * 2 0 0 @c-near-wave,
154+
@size * 2 0 0 @c-near-wave,
155+
@size * 4 0 0 @c-near-wave;
156+
}
157+
5%{
158+
box-shadow: -@size * 4 @near-wave 0 @c-near-wave,
159+
-@size * 2 0 0 @c-near-wave,
160+
@size * 2 0 0 @c-near-wave,
161+
@size * 4 0 0 @c-near-wave;
162+
transform: translateY(0);
163+
}
164+
10%{
165+
box-shadow: -@size * 4 @wave 0 @c-wave,
166+
-@size * 2 @near-wave 0 @c-near-wave,
167+
@size * 2 0 0 @c-near-wave,
168+
@size * 4 0 0 @c-near-wave;
169+
transform: translateY(0);
170+
}
171+
15%{
172+
box-shadow: -@size * 4 @after-wave 0 @c-near-wave,
173+
-@size * 2 @wave - @near-wave 0 @c-wave,
174+
@size * 2 -@near-wave 0 @c-near-wave,
175+
@size * 4 -@near-wave 0 @c-near-wave;
176+
transform: translateY(@near-wave);
177+
background-color: @c-near-wave;
178+
}
179+
20%{
180+
box-shadow: -@size * 4 -@wave 0 @c-near-wave,
181+
-@size * 2 @near-wave - @wave + @after-wave 0 @c-near-wave,
182+
@size * 2 @near-wave - @wave 0 @c-near-wave,
183+
@size * 4 -@wave 0 @c-near-wave;
184+
transform: translateY(@wave);
185+
background-color: @c-wave;
186+
}
187+
25%{
188+
@offset: @near-wave + @after-wave;
189+
box-shadow: -@size * 4 -@offset 0 @c-near-wave,
190+
-@size * 2 -@offset 0 @c-near-wave,
191+
@size * 2 @wave - @offset 0 @c-wave,
192+
@size * 4 @near-wave - @offset 0 @c-near-wave;
193+
transform: translateY(@offset);
194+
background-color: @c-near-wave;
195+
}
196+
30%{
197+
box-shadow: -@size * 4 0 0 @c-near-wave,
198+
-@size * 2 0 0 @c-near-wave,
199+
@size * 2 @near-wave + @after-wave 0 @c-near-wave,
200+
@size * 4 @wave 0 @c-wave;
201+
transform: translateY(0);
202+
}
203+
35%{
204+
box-shadow: -@size * 4 0 0 @c-near-wave,
205+
-@size * 2 0 0 @c-near-wave,
206+
@size * 2 0 0 @c-near-wave,
207+
@size * 4 @near-wave + @after-wave 0 @c-near-wave;
208+
}
209+
40%{
210+
box-shadow: -@size * 4 0 0 @c-near-wave,
211+
-@size * 2 0 0 @c-near-wave,
212+
@size * 2 0 0 @c-near-wave,
213+
@size * 4 0 0 @c-near-wave;
214+
}
215+
100%{
216+
box-shadow: -@size * 4 0 0 @c-near-wave,
217+
-@size * 2 0 0 @c-near-wave,
218+
@size * 2 0 0 @c-near-wave,
219+
@size * 4 0 0 @c-near-wave;
220+
}
221+
}
222+
}
223+
}
129224
130225
.infinite-loading-container{
131226
clear: both;
@@ -139,7 +234,6 @@
139234
font-size: @size;
140235
line-height: @size;
141236
border-radius: 50%;
142-
animation: ease loading 1.5s infinite;
143237
}
144238
}
145239

0 commit comments

Comments
 (0)