logo oujood
🔍

Comment obtenir l'effet de perspective avec la propriété perspective en CSS 3D

OUJOOD.COM

Tutoriel CSS : la propriété perspective

La propriété CSS perspective est utilisée pour définir la perspective pour les éléments 3D.

Syntaxe générale de la propriété perspective

La syntaxe générale de la propriété perspective est la suivante :

perspective: valeur;

La valeur est exprimée en pixels ou en pourcentage et doit être un nombre positif. Elle détermine la distance entre l'observateur et le plan zéro. Plus la valeur est petite, plus l'effet de perspective sera prononcé.

Valeurs par défautnone
Inherited: non
Animable : oui En savoir plus sur l'animable
Version: CSS3
Syntaxe JavaScript: object.style.perspective="50px"

Valeurs possibles de la propriété perspective

Les valeurs possibles pour la propriété perspective sont :

  • none: Valeur par défaut. Identique à 0. La perspective n'est pas définie
  • valeur en pixels: détermine la distance en pixels entre l'observateur et le plan zéro.

Exemples pratiques d'utilisation de la propriété perspective

Voici un exemple pratique d'utilisation de la propriété perspective :

Exemple :    📋 Copier le code

	<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
   <title>Tutoriel CSS : la propriété perspective</title>
         <meta name="viewport" content="width=device-width, initial-scale=1">
         
<style> 
#div1 {
  position: relative;
  height: 150px;
  width: 150px;
  margin-left: 60px;
  border: 1px solid blue;
  perspective:  150px;
}

#div2, #div4 {
  padding: 50px;
  position: absolute;
  border: 1px solid black;
  background: rgba(100,100,100,0.5); 
  transform-style: preserve-3d;
  transform: rotateX(45deg);
}

#div3 {
  position: relative;
  height: 150px;
  width: 150px;
  margin-left: 60px;
  border: 1px solid blue;
  perspective: none;
}

</style>
</head>
<body>

<h1>La propriété perspective css</h1>
<h2>perspective: 100px:</h2>
<div id="div1">DIV1
  <div id="div2">DIV2</div>
</div>

<h2>perspective: none:</h2>
<div id="div3">DIV3
  <div id="div4">DIV4</div>
</div>

</body>
</html>
	

Dans cet exemple, la propriété perspective est appliquée à l'élément parent #div1 pour définir la distance entre l'observateur et le plan zéro. La propriété transform est ensuite appliquée à l'élément enfant #div2 pour effectuer une rotation de 45 degrés autour de l'axe x.

Astuces et conseils d'utilisation de la propriété perspective

  • La propriété perspective ne s'applique qu'aux éléments avec une propriété transform spécifiée.
  • Il est recommandé d'utiliser des valeurs relativement faibles pour la propriété perspective afin d'obtenir un effet de perspective réaliste.
  • La propriété perspective peut être combinée avec la propriété perspective-origin pour définir le point d'observation de l'effet de perspective.

autre exemple : créer un cube avec des transformations 3D css

Essayons quelque chose d'encore plus cool : un cube avec des transformations 3D et la propriété perspective en CSS.

Exemple :    📋 Copier le code

<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
   <title>Tutoriel CSS : la propriété perspective</title>
         <meta name="viewport" content="width=device-width, initial-scale=1">
         
<style> 

.wrapper {
  width: 50%;
  float: left;
}

.w1 {
  perspective: 1000px;
}

.w2 {
  perspective: 250px;
}

.wrapper h2 {
  text-align: center;
}

.cube {
  font-size: 4em;
  width: 2em;
  margin: 1.5em auto;
  transform-style: preserve-3d;
  transform: rotateX(-40deg) rotateY(32deg);
}

.side {
  position: absolute;
  width: 2em;
  height: 2em;
  
  background: rgba(200.90.50, 0.6);
  border: 1px solid rgba(0,0,0,0.5);
  
  color: white; 
  text-align: center;
  line-height: 2em;
}

.front  { transform:                  translateZ(1em); }
.top    { transform: rotateX( 90deg)  translateZ(1em); }
.right  { transform: rotateY( 90deg)  translateZ(1em); }
.left   { transform: rotateY(-90deg)  translateZ(1em); }
.bottom { transform: rotateX(-90deg)  translateZ(1em); }
.back   { transform: rotateY(-180deg) translateZ(1em); }
</style>
</head>
<body>

<h1>La propriété perspective css</h1>
<div class="wrapper w1">
  <h2><code>perspective: 1000px</code></h2>
  <div class="cube">
    <div class="side  front">1</div>
    <div class="side   back">6</div>
    <div class="side  right">4</div>
    <div class="side   left">3</div>
    <div class="side    top">5</div>
    <div class="side bottom">2</div>
  </div>
</div>
<div class="wrapper w2">
  <h2><code>perspective: 250px</code></h2>
  <div class="cube">
    <div class="side  front">1</div>
    <div class="side   back">6</div>
    <div class="side  right">4</div>
    <div class="side   left">3</div>
    <div class="side    top">5</div>
    <div class="side bottom">2</div>
  </div>
</div>

</body>
</html>

Voici comment le cube est fabriqué : il s'appuie sur deux wrappers imbriqués (un pour donner la perspective au cube et un pour envelopper tous les côtés) et 6 éléments pour former les côtés. Chaque élément reçoit sa propre transformation mélangeant translation et rotation dans l'espace 3D (par exemple transform : rotateX(90deg) translateZ(1em)).

Prise en charge de la propriété dans les navigateurs

Les numéros figurant dans le tableau indiquent la première version du navigateur qui prend totalement en charge la propriété.

Les numéros suivis de -webkit- indiquent la première version qui fonctionne avec un préfixe.

ExplorateurGoogle ChromeInternet ExplorerFirefoxSafariOpera
Verssion36
12.0 -webkit-
1016
10.0-moz-
9
4.0.3 -webkit-
23
15.0-webkit-

Important : veuillez noter que la propriété de perspective n'affecte pas la manière dont l'élément est rendu ; elle active simplement un espace 3D pour les éléments enfants.
C'est la principale différence entre la fonction perspective() et la propriété perspective. La première donne de la profondeur à l'élément, tandis que la seconde crée un espace 3D partagé par tous ses enfants transformés.