Transitions CSS
Par Laurentj le vendredi, octobre 16 2009, 13:24 - Technologies Web - Lien permanent
La version de développement du futur Firefox 3.7 implémente depuis quelques jours les transitions CSS. Vous avez peut être pu le voir, en lisant Paul qui a parlé discrètement sur son blog, en même temps que la nouvelle implémentation de l'API de l'accéléromètre. Vous pouvez voir une démo de Paul avec les transitions CSS.
Le principe est assez simple:
- avec la propriété
transition-property, vous indiquez les propriétés CSS qui seront concernées par la transition, c'est à dire, quand leur valeur changera, il y aura une transition entre l'ancienne valeur vers la nouvelle valeur, le changement ne sera donc pas immédiat. transition-durationpermet d'indiquer la durée de la transition, pour chacune des propriétéstransition-timing-function, indique la fonction de transition, c'est à dire la manière dont la transition sera faite. Par exemple la fonctionease-in-outfait une transition rapide au début, lente au "milieu", et rapide à la fin. On a ainsi des fonctions pour faire des effets élastiques, smooth etc..transition-delaypour indiquer à partir de combien de temps la transition doit être faite, à partir du moment où la valeur est changée.transitionpour indiquer tout ça en une seule instruction.
Voir la spécification complète sur le site du W3C (spécification qui est encore un brouillon).
Un exemple :
.mydiv {
width: 100px;
transition: width 1s linear;
}
.mydiv:hover {
width:200px;
}
Quand on passera la souris au dessus de l'élément, sa largeur changera à 200px. Avec la propriété transition, ce changement ne sera pas immédiat. La largeur passera de 100px à 200px en 1 seconde, de manière linéaire. Bien sûr, ce changement de valeur peut être fait via javascript plutôt que sur un :hover, par exemple: document.querySelector(".mydiv").style.width="200px";.
Le gros intérêt de ces propriétés CSS, c'est que ça va rendre obsolète beaucoup de fonctions d'animations que l'on retrouve dans beaucoup de frameworks javascript (jquery, mootools...). Ça permettra des pages plus légères (les frameworks seront moins lourds à terme) et plus rapide.
C'est donc implémenté dans webkit (donc dans Safari, et Chrome je crois), et dans une future version de Firefox, en utilisant bien entendu les prefixes -webkit- et -moz- sur les propriétés pour que ça fonctionne.
Et, comme je l'avais déjà dis il y a quelques mois dans un billet sur notre technologie à Zoomorama, c'est aussi implémenté dans notre browser (développé en actionscript 3). J'ai mis en ligne deux démos faites par David Marteau, et c'est utilisable dés maintenant dans vos fichiers ZML :-)
Commentaires
Ce module Transition va faire parler de lui (d'ailleurs on est en train de finir un tuto complet sur le sujet).
Petite coquille : "ease" ne va pas créer une transition "de manière linéaire", mais en ralentissant sur la fin. C'est "linear" pour du linéaire.
Ce qui m'impressionne le plus avec ces nouveautés c'est qu'elles sont toujours au stade de brouillon. Depuis quand date la dernière version officielle de la norme CSS déjà (la 2.1 je crois)?
À combien de nouvelles propriété as-t-on eu droit depuis? Je ne cherche même plus à les compter et pourtant je suis loin de suivre tout cela de près. Ça finit par décrédibiliser le principe même des standards. Il serait peut-être plus urgent de finaliser l'existant et de publier les spécifications complètes avant de sortir des nouveautés.
Ça devient de plus en plus dur d'être crédible quand on demande à une société de respecter les standards dans ces conditions.
Avec, en plus, certains navigateurs que intègre des nouveautés malgré leur statut de brouillon ça n'aide vraiment pas à s'y retrouver.
@raphael: merci je corrige :-)
@lordphoenix: CSS3 est découpé en module, et donc il n'y a pas une specification CSS3, mais plusieurs specifications sur des sujets différents. Chacune sont a des stades differents: brouillons (working draft), relecture (last call), et attente d'implementation (candidate recommendation). Les selecteurs CSS3 sont par exemple en candidate recommendation. Le W3C attend, à ce stade, que deux implementations existent pour valider la spec. Comme elles existent, ça ne devrait pas tarder à passer en recommendation (donc un standard).
Celle sur les transitions a été soumis il y a quelques mois seulement, donc qu'elle soit à l'état de brouillon n'est pas étonnant.
Attendre que tout CSS3 soit une recommandation pour pouvoir l'utiliser, est contre productif (voir tout simplement bete). Surtout que plus c'est implémenté dans les navigateurs, et que plus c'est utilisé, plus vite le processus de normalisation avancera. (c'est en implémentant et en utilisant qu'on sait ensuite si la spéc est valable ou pas).
voir http://www.w3.org/Style/CSS/current...
pardon, les selecteurs css3 sont pas en candidate recommandation :-)