Explication du code CSS de transformation 2D.
La propriété CSS transform est apparue avec CSS3, elle permet d'effectuer des transformations de rotation, des transformations d'échelle, des transformations de translation et des transformations d'inclinaison sur un élément HTML.
La propriété css transform n'est pas reconnue par tous les navigateurs, il est nécessaire de compléter le code CSS pour cette propriété par des propriétés CSS propriétaires pour certains navigateurs :
• -ms-transform, pour Internet Explorer 9.
• -webkit-transform pour Safari et Chrome.
• -moz-transform pour Firefox > 3.5 et < 16.
• -o-transform pour Opéra > 10.5 et < 12.10.
Les fonctions CSS de transformation 2D skew(), rotate(), scale() et translate() peuvent être replacées par la fonction matrix(), seule contrainte est que cette dernière n'accepte pas d'unité de longueur car explicitement ce sont des px ou d'unité d'angle.
• Comment transformer rotate() en matrix().
• Comment transformer skew() en matrix().
• Comment transformer skewX() en matrix().
• Comment transformer skewY() en matrix().
• Comment transformer translate() en matrix().
• Comment transformer translateX() en matrix().
• Comment transformer translateY() en matrix().
• Comment transformer scale() en matrix().
• Comment transformer scaleX() en matrix().
• Comment transformer scaleY() en matrix().
Vous pouvez aussi fusionner deux matrix entre elles.
Vous pouvez changer les unités de longueur qui sont en px par une autre unité CSS de longueur. Vous pouvez changer les unités d'angle qui sont en deg par une autre unité CSS d'angle.
Les problèmes possibles.
Il est possible que la transformation ne fonctionne pas :
- si la transformation est appliquée sur un élément inline, sous Firefox, Safari et Chrome.
- si la transformation est appliquée sur une cellule, sous Firefox.
- si le doctype n'est pas valide, sous Internet Explorer.
Compatibilité du code CSS avec les navigateurs.
Je tiens compte aussi des propriétés préfixées (moz, webkit, o, ms).
Tester en Javascript.
Voici un petit script qui ajoute une classe no-csstransformation à la balise HTML quand la propriété de transformation (et/ou version préfixée) n'est pas prise en compte par le navigateur.
function haveTransformation(){
var transformation = false, domPrefixes = ['Webkit','Moz','O','ms','Khtml'], elm = document.createElement("div");
if(typeof(elm.style["transform"]) !="undefined" ) { transformation = true; }
for( var i = 0; i < 5; i++ ) {
if(typeof (elm.style[domPrefixes[i]+ 'Transform']) != "undefined" ) {
transformation = true;break;
}
}
if(transformation == false){
document.documentElement.className += " no-csstransformation";
}
}
Informations complémentaires.
*Transformation CSS3
A ce jour (05/2013) les recommandations des transformations CSS3 du W3C ne sont pas sorties, il ne s'agit pour le moment que d'un projet de travail (Working Draft).
Il est donc possible que certaines propriétés de transformation disparaissent ou apparaissent.
*transform
La propriété de transformation CSS3 transform permet d'assigner des transformations à un élément. Vous devez mettre les propriétés css préfixées : -webkit-transform, -moz-transform, -o-transform et -ms-transform.
Définition de la CSS transform
*translate()
La fonction de transformation CSS3 translate() permet de décaler un élément horizontalement et verticalement.
Fonction de transform CSS translate()
*translateX()
La fonction de transformation CSS3translateX() permet de décaler un élément horizontalement.
Fonction de transform CSS translateX()
*translateY()
La fonction de transformation CSS3translateY() permet de décaler un élément verticalement.
Fonction de transform CSS translateY()
*skewX()
La fonction de transformation CSS3 skewX() permet d'incliner un élément horizontalement.
Fonction de transform CSS skewX()
*skewY()
La fonction de transformation CSS3 skewY() permet d'incliner un élément verticalement.
Fonction de transform CSS skewY()
*skew()
La fonction de transformation CSS3 skew() permet d'incliner un élément horizontalement ou/et verticalement.
Fonction de transform CSS skew()
*rotate()
La fonction de transformation CSS3 rotate() permet tourner un élément.
Fonction de transform CSS rotate()
*scaleX()
La fonction de transformation CSS3 scaleX() permet de changer l'échelle d'un élément horizontalement.
Fonction de transform CSS scaleX()
*scaleY()
La fonction de transformation CSS3 scaleY() permet de changer l'échelle d'un élément verticalement.
Fonction de transform CSS scaleY()
*scale()
Les fonctions de transformation CSS3 scale(), scaleX() et scaleY() permettent de modifier l'échelle d'un élément horizontalement ou verticalement.
Fonction de transform CSS scale()
*matrix()
La fonction de transformation CSS3 matrix() est une autre manière de faire chaque transformation.
Fonction de transform CSS matrix()
*Unité d'angle
Il existe plusieurs unités d'angle en CSS.
Les unités d'angle CSS
*Unité de longueur
Il existe plusieurs unités de longueur en CSS.
Les unités de longueur CSS
*-moz-transform
La propriété de transformation CSS3 -moz-transform permet d'assigner des transformations à un élément sous FireFox.
CSS -moz-transform
*-webkit-transform
La propriété de transformation CSS3 -webkit-transform permet d'assigner des transformations à un élément sous les navigateurs Webkit.
CSS -webkit-transform
*-ms-transform
La propriété de transformation CSS3 -ms-transform permet d'assigner des transformations à un élément sous Internet Explorer.
CSS -ms-transform
*transform-origin
La propriété de transformation CSS3 transform-origin permet de changer le point d'origine de la transformation.
CSS transform-origin