perspective()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.
La fonction perspective()
définit la distance entre le plan d'équation z = 0 et l'œil de l'utilisateur afin de fournir une perspective aux éléments positionnés dans l'espace (3D). Chaque élément pour lequel z est positif apparaîtra plus grand et chaque élément pour lequel z est négatif apparaîtra plus petit. La « force » de cet effet est déterminée par la valeur de cette propriété. La valeur obtenue comme résultat de cette fonction est de type <transform-function>
.
Le résultat de cette fonction est une valeur de type <transform-function>
.
Exemple interactif
La fonction de transformation perspective()
s'applique à l'élément qu'on veut transformer. En revanche, les propriétés perspective
et perspective-origin
s'appliquent sur l'élément parent de l'enfant qu'on veut placer dans un espace 3D.
Syntaxe
perspective(l)
Valeurs
- l
-
Une valeur de type
<length>
qui définit la distance entre l'œil de l'utilisateur et le plan décrit par l'équationz = 0
. Si la valeur est nulle ou négative, aucune perspective ne sera appliquée.
Coordonnées cartésiennes sur ℝ2 | Coordonnées homogènes sur ℝℙ2 | Coordonnées cartésiennes sur ℝ3 | Coordonnées homogènes sur ℝℙ3 |
---|---|---|---|
Cette transformation s'applique dans l'espace (3D) et ne peut pas être représentée en deux dimensions. |
Une perspective n'est pas une transformation linéaire de ℝ3 et ne peut donc pas être représentée en utilisant une matrice du système cartésien. |
Exemples
Appliquer une perspective sur un objet 3D
CSS
.face {
position: absolute;
width: 100px;
height: 100px;
line-height: 100px;
font-size: 100px;
text-align: center;
}
p + div {
width: 100px;
height: 100px;
transform-style: preserve-3d;
margin-left: 100px;
}
.no-perspective-box {
transform: rotateX(-15deg) rotateY(30deg);
}
.perspective-box-far {
transform: perspective(9cm) rotateX(-15deg) rotateY(30deg);
}
.perspective-box-closer {
transform: perspective(4cm) rotateX(-15deg) rotateY(30deg);
}
.top {
background-color: skyblue;
transform: rotateX(90deg) translate3d(0, 0, 50px);
}
.left {
background-color: pink;
transform: rotateY(-90deg) translate3d(0, 0, 50px);
}
.front {
background-color: limegreen;
transform: translate3d(0, 0, 50px);
}
HTML
<p>Sans perspective :</p>
<div class="no-perspective-box">
<div class="face front">A</div>
<div class="face top">B</div>
<div class="face left">C</div>
</div>
<p>Avec une perspective (9cm) :</p>
<div class="perspective-box-far">
<div class="face front">A</div>
<div class="face top">B</div>
<div class="face left">C</div>
</div>
<p>Avec une perspective (4cm) :</p>
<div class="perspective-box-closer">
<div class="face front">A</div>
<div class="face top">B</div>
<div class="face left">C</div>
</div>
Résultat
Spécifications
Specification |
---|
CSS Transforms Module Level 2 # funcdef-perspective |
Compatibilité des navigateurs
BCD tables only load in the browser