Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
Dans le cadre du SMIL nous avons vu les balise animate, animateMotion, animateTransform. Mais il y a aussi la balise set. Cette balise permet de fixer une valeur pendant un certain laps de temps.
Le thème sera un feu tricolore qui doit successivement passer du vert à l'orange puis au rouge.
Soyez patient, comme vous l'êtes en tant que conducteur : le feu reste vert 10 s puis orange 3 sec et enfin rouge durant 7 s.
Pour chaque rond, je manipule la propriété fill-opacity (j'aurai pu manipuler la propriété visibility).
J'anime d'abord le rond vert, puis le rond orange, puis le rond rouge et le cycle reprend !
Un rond devient, mais par étapes, de plus en plus grand et de plus en plus opaque puis le cycle reprend.
La balise set est bien adaptée pour réaliser des changements saccadés.
Un viewBox de 400 par 400.
Concernant les noms des ID, les changements d'attributs sont préfixés "x" et les changements de propriétés CSS sont préfixées "c".
La solution d'animation via CSS que je vous propose ci-dessous ne fonctionne pour l'instante que sous Chrome.
En effet je manipule via le CSS un paramètre géométrique (r). La spécification SVG2 prévoit que les paramètres
géométriques pourront être manipulés tels des propriétés CSS.
Notez que j'ai passé en propriété un paramètre géométrique : r (rayon).
@keyframes grandir-foncer { 0% {r:20 ; fill-opacity : 0.1; } 25% {r:40 ; fill-opacity : 0.3; } 50% {r:80 ; fill-opacity : 0.7; } 100% {r:160 ; fill-opacity : 1; } } #rond {animation : grandir-foncer 12s 0s infinite steps(2,start) alternate; }
Dans un "keyframes" je manipule un paramètre géométrique : r (rayon) comme une propriété de style.
Pour obtenir un animation saccadée il faut utiliser comme rythme de l'animation la fonction "steps".
Chrome avait envisagé de déprécier SMIL de SVG mais est revenu sur cette décision.
Avec la version 2 de SVG, tous les paramètres géométriques de taille et de position (width,height, r, rx, ry, x, y, cx, cy)
pourront être passés en propriétés comme je l'ai montré ci-dessus.
Donc on pourra animer via le CSS ! ; le SMIL sera alors devenu obsolète mais encore faut-il que tous les navigateurs
aient implémenté la version 2. Or ils ne semblent pas très préssés.