Proprietà CSS perspective-origin
Usa la proprietà CSS perspective-origin per decidere da quale prospettiva l'elemento deve essere mostrato all'utente. Valori ed esempi.
La proprietà CSS perspective-origin imposta la posizione da cui il visualizzatore sembra guardare un elemento trasformato in 3D. In altre parole, sposta il punto di fuga — il punto verso cui convergono le facce inclinate rispetto allo schermo. È una delle proprietà CSS3.
Come funziona
Una scena 3D ha bisogno di due ingredienti per apparire corretta:
- La proprietà
perspective, che definisce quanto è intenso l'effetto 3D (minore è il valore, più accentuato è l'accorciamento prospettico). - La proprietà
perspective-origin, che determina dove si trova la telecamera.perspectivedecide la profondità del punto di fuga;perspective-originne decide la posizione orizzontale e verticale.
Per impostazione predefinita il punto di fuga si trova esattamente al centro dell'elemento (50% 50%), quindi la faccia ruotata di un elemento figlio appare simmetrica. Spostare perspective-origin su un lato equivale a camminare intorno all'oggetto: lo stesso elemento figlio sembrerà visto da sinistra, da destra, dall'alto o dal basso.
perspective-origin ha effetto solo quando è impostata anche perspective, sullo stesso elemento o su un antenato. Senza di essa, la proprietà viene analizzata ma non produce alcun effetto.
La sintassi a due valori segue sempre l'ordine orizzontale prima, verticale dopo (ad esempio perspective-origin: 25% 75%). Se si fornisce un solo valore, quello mancante assume il valore predefinito center. Le coppie di parole chiave come top left costituiscono un'eccezione: le parole chiave possono essere scritte in qualsiasi ordine perché ciascuna indica un asse specifico.
perspective-origin viene applicata all'elemento genitore ma determina come i suoi figli vengono proiettati — l'elemento a cui viene applicata non è trasformato direttamente.
| Valore iniziale | 50% 50% |
|---|---|
| Si applica a | Elementi trasformabili. |
| Ereditato | No. |
| Animabile | Sì. La trasformazione della prospettiva è animabile. |
| Versione | CSS3 |
| Sintassi DOM | object.style.perspectiveOrigin = "20px 70%"; |
Sintassi
Sintassi CSS di perspective-origin
perspective-origin: x-position y-position | x | y | closest-side | farthest-side | initial | inherit;Esempio della proprietà perspective-origin:
Esempio di codice CSS perspective-origin
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.element1 {
position: relative;
height: 150px;
width: 150px;
margin-left: 60px;
border: 1px solid #666;
perspective: 130px;
perspective-origin: 50% 50%;
}
.element2 {
padding: 50px;
position: absolute;
border: 1px solid #000;
background: #8ebf42;
transform-style: preserve-3d;
transform: rotateX(45deg);
}
</style>
</head>
<body>
<h2>Perspective-origin property example</h2>
<h3>Perspective-origin: 50% 50%:</h3>
<div class="element1">
Box1
<div class="element2">Box2</div>
</div>
</body>
</html>Risultato

Con il valore predefinito 50% 50%, il punto di fuga è centrato, quindi il Box2 ruotato appare uniformemente accorciato. Negli esempi successivi spostiamo quel punto verso un bordo e osserviamo come cambia l'angolo di visione apparente.
Esempio della proprietà perspective-origin con il valore "left":
Esempio CSS perspective-origin con valore left
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.element1 {
position: relative;
height: 150px;
width: 150px;
margin-left: 20px;
border: 1px solid #666;
perspective: 80px;
perspective-origin: left;
}
.element2 {
padding: 50px;
position: absolute;
border: 1px solid #000;
background: #8ebf42;
transform-style: preserve-3d;
transform: rotateX(45deg);
}
</style>
</head>
<body>
<h2>Perspective-origin property example</h2>
<h3>Perspective-origin: left:</h3>
<div class="element1">
Box1
<div class="element2">Box2</div>
</div>
</body>
</html>Esempio della proprietà perspective-origin con il valore "right":
Esempio CSS perspective-origin con valore right
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.element1 {
position: relative;
height: 150px;
width: 150px;
margin-left: 160px;
border: 1px solid #666;
perspective: 80px;
perspective-origin: right;
}
.element2 {
padding: 50px;
position: absolute;
border: 1px solid #000;
background: #8ebf42;
transform-style: preserve-3d;
transform: rotateX(45deg);
}
</style>
</head>
<body>
<h2>Perspective-origin property example</h2>
<h3>Perspective-origin: right:</h3>
<div class="element1">
Box1
<div class="element2">Box2</div>
</div>
</body>
</html>Esempio della proprietà perspective-origin definita come "bottom right":
Esempio CSS perspective-origin con valore bottom
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.element1 {
position: relative;
height: 150px;
width: 150px;
margin-left: 60px;
border: 1px solid #666;
perspective: 130px;
perspective-origin: bottom right;
}
.element2 {
padding: 50px;
position: absolute;
border: 1px solid #000;
background: #8ebf42;
transform-style: preserve-3d;
transform: rotateX(45deg);
}
</style>
</head>
<body>
<h2>Perspective-origin property example</h2>
<h3>Perspective-origin: bottom right:</h3>
<div class="element1">
Box1
<div class="element2">Box2</div>
</div>
</body>
</html>Valori
| Valore | Descrizione |
|---|---|
| x-position | La posizione orizzontale del punto di fuga. Accetta un valore <length>, una percentuale o una delle parole chiave left (= 0), center (= 50%) o right (= 100%). |
| y-position | La posizione verticale del punto di fuga. Accetta un valore <length>, una percentuale o una delle parole chiave top (= 0), center (= 50%) o bottom (= 100%). |
| initial | Imposta questa proprietà al suo valore predefinito (50% 50%). |
| inherit | Eredita questa proprietà dall'elemento genitore. |
I valori percentuali e di lunghezza vengono risolti rispetto al box dell'elemento stesso, con l'origine nell'angolo in alto a sinistra. Quindi 0 0 posiziona il punto di fuga in alto a sinistra, 100% 100% in basso a destra, e sono ammessi valori negativi o superiori al 100% per spostare la telecamera al di fuori del box.
Supporto browser
perspective-origin è supportata in tutti i browser moderni. Non è più necessario utilizzare prefissi vendor come -webkit-perspective-origin per le versioni attuali di Chrome, Edge, Firefox e Safari.
Proprietà correlate
perspective— imposta la distanza dal punto di fuga ed è obbligatoria affinchéperspective-originabbia effetto.transform— applica le trasformazionirotateX,rotateYetranslateZa cui viene applicata la prospettiva.transform-style— usapreserve-3daffinché gli elementi figli annidati mantengano le proprie posizioni 3D all'interno della prospettiva.backface-visibility— controlla se il lato rovesciato di un elemento ruotato viene mostrato.