"Sono stato bocciato a parecchi esami. Un mio amico invece, li ha passati tutti a pieni voti. Ora è ingegnere e lavora in Microsoft. Io sono il proprietario."  - Bill Gates  •  "Se riesco a fare qualcosa in 10 minuti, è perché ho passato anni a studiarlo."  - Bill Gates  •  "Il vostro lavoro riempirà gran parte della vostra vita, e l'unico modo per essere veramente soddisfatti è fare ciò che ritenete sia un grande lavoro."  - Steve Jobs  •  "Siate affamati. Siate folli."  - Steve Jobs  •  

cinque 

ZERO

{CSS} Le trasformazioni

home / css /

Lucio Asciolla

Full Stack Developer

Indice

Il modulo CSS 2D Transforms incluso nella specifica CSS3 ci consente di effettuare delle trasformazioni su un oggetto presente nella pagina.
Le trasformazioni possono anche essere combinate tra loro possiamo quindi  ruotare, scalare, inclinare e capovolgere un elemento.

Le proprietà necessarie sono:

transform & transform-origin:

transformdove specifichiamo quali "trasformazioni" applicare (rotate, scale ecc.)
transform-origindove definiamo l'origine ovvero il punto di partenza da dove iniziare la trasformazione (top left, top right ecc.)
h1 {
transform: rotate(45deg);
transform-origin: left bottom;
}

Così come avveniva per le transizioni al fine di una corretta lettura da parte della maggior parte dei browser in circolazione è opportuno scrivere le regole con i seguenti suffissi:

h1 {
transform: rotate(45deg);
transform-origin: left bottom;
/* Internet Explorer */
-ms-transform: rotate(45deg);
-ms-transform-origin: left bottom;
/* FireFox */
-moz-transform: rotate(45deg);
-moz-transform-origin: left bottom;
/* Safari e Chrome */
-webkit-transform: rotate(45deg);
-webkit-transform-origin: left bottom;
/* Opera */
-o-transform: rotate(45deg);
-o-transform-origin: left bottom;
}

Funzioni di trasformazione

Nella seguente tabelle elenchiamo tutte le funzioni di trasformazioni possibili:

matrixtrasformazione in forma di matrice SVG
translatetraslare l’oggetto in base al valore indicato
translatex translatytraslazione su unico asse specifico
scaleridimensionare l’oggetto in base ai valori indicati
scalex scaleyridimensione su unico asse specifico
rotateruotare l’oggetto in base al numero di gradi indicati
skewdistorce l’oggetto per un valore pari al numero di gradi indicati
skewx skewydistorsione su unico asse specifico

translate:

La funzione consente di traslare l’oggetto in base al valore indicato. E' possibile indicare uno o due valori che sono rispettivamente l’asse X e l’asse Y.
Se il secondo parametro non viene dichiarato, la traslazione sull’asse Y assume valore zero.

.classe {
transform: translate(10px, 10px);
}

translatex: translaty:

Praticamente identiche alla funzione precedente con la sola differenza che prendono in ingresso un unico parametro.

.classe {
transform: translatex(10px);
}

scale:

Con la funzione scale è possibile ridimensionare l’elemento in base ai valori impostati;
Indicando un solo parametro, questo sarà assegnato ad entrambi gli assi.

Valori > di 1 - l'elemento sarà ingrandito
Valori < di 1 & > 0 - l'elemento sarà rimpicciolito

.classe {
transform: scale(1.5);
}

scalex: scaley:

Queste funzioni consentono, come per la funzione translate, di ridimensionare l’oggetto solo su uno degli assi

.classe {
transform: scalex(0.2);
}

rotate:

La funzione rotate consente di ruotare l’elemento in base al numero di gradi indicati (deg)

.classe {
transform: rotate(45deg);
}

skew:

La funzione distorce l’elemento per un valore pari al numero di gradi indicati.
Se indichiamo due parametri l’inclinazione verrà effettuata su entrambi gli assi, altrimenti solo sull’asse X.

.classe {
transform: skew(45deg, 15deg);
}

skewx: skewy:

Come per le funzioni precedenti, anche in questo caso entrambe si riferiscono all’inclinazione di uno solo degli assi.

.classe {
transform: skewy(45deg);
}

matrix:

La funzione matrix permette non solo di scalare e spostare un elemento, ma anche di inclinarlo dinamicamente.

.classe {
transform: matrix(1, 0, 0, 1, 0, 0);
}

TRASFORM: MATRIX (A=scalex, B=scaley, C=skewy, D=skewx, E=translatex, F=traslatey);

A = scala/ridimensiona orizzontalmente
B = distorce/inclina verticalmente
C = distorce/inclina orizzontalmente
D = scala/ridimensiona verticalmente
E = sposta/trasla orizzontalmente
F = sposta/trasla verticalmente

Trasformazioni multiple:

Combinare le trasformazioni

E' possibile assegnare una lista di funzioni di trasformazioni ad un elemento.
Questa la sintassi da utilizzare:

h1 {
transform: rotate(180deg) skew(20deg, 30deg) scale(2);
}
Argomenti collegati