Présentation▲
Dans cet exemple, je vais utiliser deux animations CSS3. La première pour les fondus de couleur des triangles, la seconde pour la rotation de l'ensemble. Ces deux animations synchronisées vont permettre de créer un effet assez plaisant.
Le HTML▲
Au départ, j'ai voulu utiliser les pseudoéléments afin d'avoir besoin de moins de balises. Le problème, c'est que l'ensemble généré ne peut actuellement être animé qu'avec Firefox.
Voici à quoi ressemble le balisage :
Le CSS▲
Il y a plusieurs choses importantes à prendre en compte.
- Pour que l'effet de fondu soit agréable et homogène sur les trois triangles, il faut appliquer des valeurs différentes pour l'option animation-delay.
- Notez le vide entre 20 % et 100 % pour l'animation rotation. Cela permet d'avoir un point d'arrêt dans l'animation.
- Dans l'exemple, seule la propriété @keyframes est renseignée, pour une implémentation réelle, vous devrez utiliser les versions préfixées (voir le code de l'exemple).
.loading-wrap
{
width:
60
px;
height:
60
px;
position:
absolute
;
top
:
50
%;
left
:
50
%;
margin:
-30px 0
0
-30px;
background:
#777
;
animation:
rotation ease-in-out
2
s infinite
;
border-radius:
30
px;
}
.triangle1
,
.triangle2
,
.triangle3
{
border-width:
0
20
px 30
px 20
px;
border-style:
solid
;
border-color:
transparent
;
border-bottom-color:
#67cbf0
;
height:
0
;
width:
0
;
position:
absolute
;
left
:
10
px;
top
:
-10px;
animation:
fadecolor 2
s 1
s infinite
;
}
.triangle2
,
.triangle3
{
content:
''
;
top
:
20
px;
left
:
30
px;
animation-delay:
1.1
s;
}
.triangle3
{
left
:
-10px;
animation-delay:
1.2
s;
}
@keyframes
rotation {
0
% {
transform:
rotate
(
0
deg);}
20
% {
transform:
rotate
(
360
deg);}
100
% {
transform:
rotate
(
360
deg);}
}
@keyframes
fadecolor {
0
% {
border-bottom-color:
#eee
;}
100
%{
border-bottom-color:
#67cbf0
;}
}
Conclusion et remerciements▲
Souvenez-vous que cette animation est présentée à titre expérimental. Pour l'instant, je pense qu'un GIF animé sera une meilleure solution dans la plupart des cas.
D'autre part, cet exemple n'est pas le meilleur pour vous convaincre d'utiliser CSS3 à la place des images pour limiter le nombre de requêtes HTTP. Le support insuffisant des animations CSS3 par les navigateurs ne permet pas à cette technique d'être satisfaisante actuellement. Cependant, j'espère que vous aurez trouvé cet exemple utile et qu'il vous inspirera pour vos futurs développements.
Si cet article vous a plu, n'hésitez pas à me le dire en laissant un commentaire !
Cet article a été publié avec l'aimable autorisation de Catalin Rosu. L'article original peut être lu sur le site de Red Team Design : CSS3 loading animation experiment.
Nous tenons aussi à remercier ClaudeLELOUP pour sa relecture attentive de cet article.