Perspective - Propriété CSS

perspective

Résumé des caractéristiques de la propriété perspective

Description rapide
Effet de perspective appliqué à un élément ayant subi une transformation 3D.
Statut
Standard
Utilisable sur
HTML
Valeurs prédéfinies
none
Pourcentages
Ne s'appliquent pas.
Valeur initiale
none
Héritée par défaut
Non.
Type d'animation
Computed value : lors d'une animation, la propriété perspective passe progressivement d'une valeur à une autre.
Module W3C
Module CSS - Transformations
Références (W3C)
Statut du document: WD (document de travail)

Schéma de la syntaxe de perspective.

perspective - Syntax DiagramSyntax diagram of the perspective CSS property. none none length lengthperspective:;perspective:;
Schéma syntaxique de la propriété perspective.
Syntaxe détaillée

Sur le schéma, les termes en gras sont les mots prédéfinis de CSS, les autres termes sont décrits ci-dessous :

Description de la propriété perspective.

La propriété perspective définit un effet de perspective sur un élément qui a subi une transformation 3D. Reportez-vous à la page sur transform pour une présentation des transformations en CSS.

Exemple sans transformation et sans perspective
Élément non transformé : il est dans le plan 2D
Exemple avec une rotation sans perspective
Cet élément a subi une rotation. Sans effet de perspective il parait simplement compressé.
Exemple avec une rotation et un effet de perspective
Cet élément a subi la même rotation, mais avec un effet de perspective.

Attention à la particularité de perspective : son effet est visible sur les éléments enfants. Il faut donc appliquer la propriété au container. L'effet de perspective est calculé en considérant que l'observateur est au centre de l'élément container. Voir la propriété perspective-origin pour changer la position de l'observateur.

perspective n'a aucun effet sur les éléments qui n'ont pas subi de transformation, ou ceux qui ont subi une transformation qui les laisse dans le plan 2D. L'effet de perspective est visible sur les transformations suivantes :

  • Rotations suivant l'axe X (horizontal) ou suivant l'axe Y (vertical).
  • Déplacement suivant l'axe Z.
  • Toutes les combinaisons faisant intervenir au moins une des deux transformations ci-dessus.

Valeurs pour perspective.

  • perspective: none;

    Aucun effet de perspective n'est appliqué.

  • perspective: 200px;

    Cette valeur définit la distance entre l'observateur et l'élément. L'effet de perspective est d'autant plus élevé que observateur et élément sont proches.

    La valeur est un nombre strictement positif, suivi d'une des unités de dimension. Les pourcentages ne sont pas autorisés.

  • perspective: initial; (none) perspective: inherit; perspective: revert; perspective: revertLayer; perspective: unset;

    Les valeurs communes sont présentées sur ces pages : initial, inherit, revert, revert-layer, unset.

Exemple d'animation de perspective.

L'animation de perspective peut donner des résultats surprenants. Par exemple, on a l'impression sur cet exemple que la vitesse de l'animation n'est pas du tout constante. Pourtant il s'agit bien d'une animation linéaire, mais le calcul de perspective est beaucoup plus sensible pour les faibles valeurs (là où l'effet de perspective est le plus marqué).

L'exemple est constitué d'un élément parent, sur lequel on applique la perspective (avec l'animation), et d'un élément enfant sur lequel la transformation a été appliquée. Il s'agit ici d'une rotation suivant l'axe Y (vertical).

➽➽➽➽➽➽

Exemple interactif avec la propriété perspective.

Le simulateur ci-dessous vous permettra de comprendre l'effet de la propriété perspective : les deux cadres intérieurs ont déjà reçu les styles pour les tourner suivant l'axe X ou l'axe Y. Tapez une dimension entre 50px et 700px et observez le résultat. En dessous de 50 pixels, la déformation est vraiment trop forte et rend le texte illisible. Au dessus de 700px, les variations de perspective sont trop peu sensibles.

L'observateur est censé se trouvé au milieu de l'élément parent. Sa position est matérialisée par le dessin d'un œil. Voir la propriété perspective-origin pour changer cet emplacement.

Pour le fun, vous pouvez aussi observer tout ceci en animation  

perspective :
Cet élément a été tourné de 30 degrés suivant l'axe X
Cet élément a été tourné de -45 degrés suivant l'axe Y

Compatibilité des navigateurs avec perspective.

Colonne 1
Prise en charge générale des animations en 3D, incluant le support pour la gestion de la perspective et le support pour la propriété backface-visibility.
Colonne 2
Support par les navigateurs de la propriété perspective pour définir la hauteur du point de vue (transformations 3D).

Remarques :

(2) Internet Explorer ne supporte pas transform-style:preserve-3d limitant ainsi l'imbrication des animations.

(1) En IOS 13 la propriété perspective ne fonctionne pas correctement.

1
Transformations
3D
2
Propriété
perspective
Estimation de la prise en charge globale.
97%
96%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

KaiOS Browser

Opéra Mobile

Opéra

Firefox pour Androïd

Samsung Internet

Chrome

Edge

Firefox

Androïd Brower

Chrome pour Androïd

Baidu Browser

QQ Browser

Safari

Safari sur IOS

UC Browser pour Androïd

Opéra mini

Histoire de la propriété perspective.

  • Module CSS - Transformations - Niveau 2

    Introduction des transformations en 3D et de la propriété perspective dans la spécification concernant les transformations.
    WD
    03 Mars 2020
    Document de travail.
    CR
    PR
    REC

Voir aussi, concernant les transformations.

Le W3C organise les spécifications CSS en modules. Le module "Module CSS - Transformations" ou CSS Transforms Module en anglais, regroupe toutes les définitions concernant les transformations CSS :

Propriétés :

backface-visibility
Visibilité de la face arrière de l'élément (pendant sa rotation).
perspective-origin
Position de l'observateur dans le cas d'une déformation 3D avec perspective.
rotate
Définit une rotation à appliquer à l'élément.
scale
Définit une mise à l'échelle de l'élément (agrandissement ou réduction).
transform
Applique une ou plusieurs transformations géométriques (rotations, agrandissements, etc.).
transform-box
Définit la boîte de référence pour les transformations.
transform-origin
Définit le point d'origine pour les transformations.
transform-style
Définit comment sont rendus les éléments soumis à une transformation 3D.
translate
Applique une translation à un élément (un déplacement linéaire).

Fonctions :

matrix()
Applique une transformation composite à un élément (translations, rotations...).
matrix3d()
Applique une série de transformations 3D à un élément.
perspective()
Définit la hauteur de l'observateur dans le cas d'une transformation 3D.
rotate()
Définit une rotation à appliquer à l'élément en 2D (dans le plan de l'écran).
rotate3d()
Définit une rotation 3D à appliquer à un élément autour d'un axe quelconque en 3D.
rotateX()
Définit une rotation de l'élément autour de l'axe X (en 3D),
rotateY()
Définit une rotation 3D de l'élément autour de l'axe Y.
rotateZ()
Définit une rotation de l'élément autour de l'axe Z.
scale()
Définit un agrandissement ou une réduction de l'élément.
scale3d()
Définit une mise à l'échelle en 3D.
scaleX()
Définit une mise à l'échelle suivant l'axe X.
scaleY()
Définit une mise à l'échelle suivant l'axe Y.
scaleZ()
Définit une mise à l'échelle suivant l'axe Z.
skew()
Définit une inclinaison de l'élément suivant les axes X et/ou Y.
skewX()
Définit une inclinaison de l'élément suivant l'axe X.
skewY()
Définit une inclinaison de l'élément suivant l'axe Y.
translate()
Définit une translation (un déplacement) à un élément.
translate3d()
Définit une translation en 3D suivant un ou plusieurs des axes X,Y et Z.
translateX()
Définit une translation suivant l'axe X (horizontalement).
translateY()
Définit une translation suivant l'axe Y (verticalement).
translateZ()
Définit une translation suivant l'axe Z (perpendiculaire à l'écran).