Maison >interface Web >tutoriel CSS >Fonctions de transformation 3D dans CSS
Dans cet article, je vais montrer comment ajouter une autre dimension à vos pages Web et applications avec les nouvelles fonctions et propriétés de transformation 3D dans CSS. Nous examinerons la transformation, la traduction, les rotations, la mise à l'échelle, la perspective et plus, ainsi que les problèmes à faire avec l'index z, les gotchas de navigateur et les meilleurs cas d'utilisation pour ces fonctions.
Les éléments HTML peuvent être transformés en trois dimensions:
Sur un écran bidimensionnel, il est utile de penser que la surface est à Z Coordate Zero. Une valeur Z positive déplace un objet vers vous (devant l'écran) tandis qu'une valeur Z négative déplace un objet (derrière l'écran). Lorsque la perspective est ajoutée, une valeur Z plus éloignée peut faire disparaître l'objet entièrement.
Il y a certaines choses à noter ici:
Les transformations 3D sont bien soutenues dans tous les navigateurs modernes (IE10), mais:
Les sections suivantes décrivent les propriétés et fonctions de transformation 3D. La page de démonstration illustre comment la plupart sont utilisées.
Tout élément peut avoir une seule propriété de transformation appliquée. Il peut se voir attribuer une fonction avec un ou plusieurs paramètres. Par exemple:
<span><span>.element</span> { </span> <span>transform: function1(parameter1, [...parameterN]); </span><span>} </span>
Si deux transformations ou plus sont nécessaires, un nombre de fonctions séparées dans l'espace peut être définie:
<span><span>.element</span> { </span> <span>transform: function1(p1, [...pN]) function2(p1, [...pN]); </span><span>} </span>
par exemple, pour évoluer dans le plan horizontal et se transformer verticalement:
<span><span>.element</span> { </span> <span>transform: scaleX(2) translateY(50px); </span><span>} </span>
Enfin, transform: aucun; supprime toutes les transformations existantes.
Vous avez peut-être utilisé des fonctions traduites pour déplacer un élément horizontalement le long de l'axe x ou verticalement le long de l'axe y:
<span>transform: translateX(50px); /* 50px to right */ </span><span>transform: translateY(-100%); /* 100% up */ </span><span>transform: translate(50px, -100%); /* both together */ </span>
Toute unité de longueur peut être utilisée. Pourcentages de référence à la taille de l'élément transformé, donc un bloc de haut de 100px avec Translatey (80%) applique le déplace de 80 pixels.
En passant dans la troisième dimension, nous pouvons également utiliser Translatez:
<span>transform: translateZ(-200px); /* 200px 'into' the screen */ </span>
Étant donné trois éléments, # box1, # box2 et # box3, absolument positionné au même endroit, avec translatez (-200px) appliqué à # box2 et tradlatez (-400px) appliquée à # box3. Le résultat est assez peu inspirant:
Cependant, si nous tournons tout le conteneur #Scène extérieur, les transformations de l'axe Z deviennent plus évidentes:
<span><span>#scene</span> { </span> <span>transform-style: preserve-3d; </span> <span>transform: rotateX(-10deg) rotateY(-10deg); </span><span>} </span>
La fonction raccourci la fonction3D permet à un élément d'être déplacé le long des trois axes en conséquence:
<span>transform: translate3d(50px, 100%, 7em); /* x, y, z axis */ </span>
Par défaut (et toujours dans IE), le style transform est défini sur plat. Cela indique que tous les enfants transformés d'un élément se trouvent dans le plan de l'élément lui-même. En d'autres termes, les éléments intérieurs pourraient avoir une transformation appliquée, mais elles seraient écrasées dans le plan plat du conteneur:
Dans la plupart des situations, style transform: préserve-3d; Doit être utilisé pour indiquer que les éléments enfants sont positionnés dans l'espace 3D et toute transformation du conteneur se transformera en conséquence.
La fonction 2D Rotate () tourne en fait des éléments autour de l'axe Z et est identique à Rotatez (). Par exemple:
<span>transform: rotateZ(45deg); /* or rotate(45deg) */ </span>
rotatex () tourne autour de l'axe horizontal et rotatey () autour de la verticale.
Les angles peuvent être définis dans:
Trois axes de rotation peuvent être définis avec la fonction rotate3d (). De manière quelque peu confuse, il accepte quatre valeurs, qui décrivent un vecteur:
Les masochistes mathématiques peuvent lire tous les détails de Rotate3d () à Mdn.
Les fonctions Scalex () et Scaley () étirent ou réduisent un élément dans les plans horizontaux et verticaux en conséquence:
<span><span>.element</span> { </span> <span>transform: function1(parameter1, [...parameterN]); </span><span>} </span>
scalez () fait de même pour le plan de profondeur. Dans l'exemple ci-dessus, Transform: Scalez (0,5); réduit donc l'espacement entre chaque élément de moitié.
La fonction SCALE3D (x, y, z) peut appliquer la mise à l'échelle dans tous les plans dans une commande. Par exemple:
<span><span>.element</span> { </span> <span>transform: function1(p1, [...pN]) function2(p1, [...pN]); </span><span>} </span>
Par défaut, un élément est tourné et mis à l'échelle autour de son point central. Cela peut être modifié en définissant l'origine transformateur avec jusqu'à trois valeurs séparées dans l'espace:
Le déplacement d'une origine affecte le plan de rotation des autres. Par exemple, l'origine transformée: Centre gauche 0; déplace l'origine vers le centre du bord gauche. Cela affectera les fonctions rotatey () et rotatez ().
L'arrière d'un élément est illustré lorsqu'il tourne autour de l'axe X ou Y de plus de 90 mais moins de 270 degrés dans les deux sens. L'arrière est effectivement une image miroir et elle est visible par défaut.
L'arrière peut être masqué en définissant BackFace-Visibilité: Hidden; - S'il est appliqué à # box2:
<span><span>.element</span> { </span> <span>transform: scaleX(2) translateY(50px); </span><span>} </span>
backface-visibilité: caché; est souvent utilisé pour les animations de flux de cartes où deux éléments montrent l'avant et le dos d'une carte, mais un seul peut être visible à la fois.
Les exemples ci-dessus ci-dessus n'appliquent pas la perspective. Un élément déplacé plus profondément dans le plan Z reste de la même taille, peu importe à quelle distance il est du spectateur. La propriété Perspective n'en est pas par défaut, mais elle peut être définie sur n'importe quelle longueur positive. Par exemple:
<span><span>.element</span> { </span> <span>transform: function1(parameter1, [...parameterN]); </span><span>} </span>
Plus la longueur de la perspective est petite, plus le point de disparaître et plus l'effet 3D est prononcé:
<span><span>.element</span> { </span> <span>transform: function1(p1, [...pN]) function2(p1, [...pN]); </span><span>} </span>
Par défaut, le point de disparition de perspective est au centre de l'élément transformé. Il peut être modifié en définissant l'origine perspective: x y;, où:
Point de disparition supérieur-gauche:
<span><span>.element</span> { </span> <span>transform: scaleX(2) translateY(50px); </span><span>} </span>
Point de disparition en bas à droite:
<span>transform: translateX(50px); /* 50px to right */ </span><span>transform: translateY(-100%); /* 100% up */ </span><span>transform: translate(50px, -100%); /* both together */ </span>
Il existe également une fonction perspective () - pour examen, transformée: perspective (200px). Cependant, il ne semble pas respecter une orientation en perspective.
Enfin, la mise à l'échelle, la rotation et la traduction peuvent être définies dans une seule fonction matrix3d () qui nécessite pas moins de 16 valeurs pour une transformation affine en trois dimensions.
Ceci est probablement mieux utilisé en JavaScript et tenté par ceux qui ont un diplôme en géométrie! Pour CSS, une liste des fonctions de transformation est probablement plus lisible et maintenable.
Le travail en trois dimensions peut être conceptuellement difficile, mais les transformations CSS sont une voie plus facile vers la manipulation des objets. La page de démonstration fournit un outil interactif qui vous aidera à comprendre comment les propriétés et les fonctions fonctionnent ensemble.
Vous pouvez trouver de superbes exemples de transformations CSS 3D, y compris les téléspectateurs de réalité virtuelle, les tireurs à la première personne, les galeries d'images et le texte de défilement Star Wars. Beaucoup sont des démonstrations de preuve de concept qui sont peu susceptibles d'avoir une utilisation dans des projets typiques. Cependant, quelques effets 3D subtils et progressivement améliorés peuvent ajouter une autre dimension à vos pages et applications Web.
Les fonctions de transformation 3D CSS vous permettent de manipuler des éléments dans un espace tridimensionnel. Les fonctions de base incluent Rotatex (), Rotatey (), Rotatez (), Translate3D (), Translatez (), Scale3D () et Perspective (). Chaque fonction a un effet unique sur l'élément. Par exemple, Rotatex () tourne l'élément autour de l'axe x, tandis que Translatez () déplace l'élément le long de l'axe Z. Ces fonctions peuvent être combinées pour créer des transformations 3D complexes.
La fonction perspective () dans les transformations 3D CSS définit à quel point l'objet est loin de l'utilisateur. Il crée l'illusion de la profondeur et de la perspective dans un élément transformé en 3D. La fonction prend un paramètre, qui est la valeur de perspective dans les pixels. Une valeur inférieure crée un effet de perspective plus prononcé qu'une valeur plus élevée.
Oui, vous pouvez combiner plusieurs fonctions de transformation 3D dans CSS. Cela se fait en répertoriant chaque fonction, séparée par un espace, dans la propriété Transform. Les fonctions sont appliquées dans l'ordre où elles sont répertoriées. Cela vous permet de créer des effets 3D complexes en combinant des rotations, des traductions et de l'échelle.
La principale différence entre les transformations 2D et 3D dans CSS est la dimension dans laquelle les transformations se produisent. Les transformations 2D affectent les éléments des axes x et y, tandis que les transformations 3D incluent également l'axe Z, ajoutant de la profondeur aux transformations. Cela signifie que les transformations 3D peuvent tourner, se déplacer et évoluer des éléments en trois dimensions, créant un effet plus immersif et dynamique.
Le BackFace La propriété BackFace-Visibilité dans CSS contrôle si la face arrière d'un élément est visible lorsqu'il n'est pas confronté à la visionneuse. Cette propriété est particulièrement utile dans les transformations 3D où un élément tourne et sa face arrière devient visible. La propriété prend deux valeurs: «Visible», qui montre la face arrière, et «cachée», qui le cache.
La propriété d'origine transformateur dans les transformations CSS 3D vous permet de spécifier l'origine pour les transformations. Par défaut, les transformations proviennent du centre de l'élément. Cependant, vous pouvez changer cela en n'importe quel point de l'élément à l'aide de la propriété Transform-Origin. Cette propriété prend deux ou trois valeurs, représentant le X, Y, et éventuellement, l'axe z.
Oui, vous pouvez animer les transformations CSS 3D à l'aide de transitions ou d'animations CSS. Cela vous permet de créer des transformations lisses et progressives qui améliorent l'expérience utilisateur. Vous pouvez contrôler la durée, la fonction de synchronisation et le retard de l'animation en utilisant les propriétés CSS respectives.
La plupart des navigateurs modernes prennent en charge les transformations 3D 3D. Cependant, c'est toujours une bonne idée de vérifier la prise en charge spécifique du navigateur pour chaque fonction, car certaines versions plus anciennes peuvent ne pas prendre en charge entièrement toutes les fonctionnalités. Vous pouvez utiliser des outils comme puis-je utiliser pour vérifier la prise en charge actuelle du navigateur pour les transformations CSS 3D.
Un effet flip 3D peut être Créé à l'aide de transformations CSS 3D en combinant la fonction Rotatey () ou Rotatex () avec une transition. La fonction rotative retourne l'élément autour de son axe Y ou X, tandis que la transition crée l'animation de retournement. Vous pouvez contrôler la vitesse et le synchronisation du FLIP à l'aide des propriétés de transition et de transition de fonctionnement.
La matrice3d ( ) La fonction dans les transformations CSS 3D vous permet de spécifier une matrice de transformation 4 × 4 contenant 16 valeurs. Cette fonction peut représenter n'importe quelle transformation 3D, ce qui en fait un outil puissant pour créer des effets 3D complexes. Cependant, il peut être assez complexe à utiliser, car il nécessite une compréhension approfondie des mathématiques matricielles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!