Sto tentando di utilizzare il supporto di Webkit per CSS3 transform: matrix3d(<matrix>)
per creare un effetto 'falling card'. (L'unico obiettivo per l'uscita di questo è Chrome)CSS3 matrix3d rettangolo a trasformazione trapezoidale
L'effetto finale deve passare attraverso le 4 fasi qui di seguito e finire come solo una linea orizzontale:
Ecco il CSS ho ora:
#test {
margin: auto auto;
height: 200px;
width: 200px;
border:1px solid black;
background-color: lightblue;
-webkit-perspective: 1000;
-webkit-transform-origin: 50% 100%;
-webkit-transform-style: preserve-3d;
-webkit-animation-name: flip-card;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: linear;
-webkit-box-shadow: 0px 5px 20px rgba(0, 0, 0, 0.5);
}
@-webkit-keyframes flip-card {
0% {-webkit-transform: ;}
100% {-webkit-transform:
matrix3d(1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 0, 0,
0, 0, 0.001, 1);}
}
E il codice HTML è semplice per i test:
<body>
<div id="test">this div should fall forward...</div>
</body>
La matrice3d di cui sopra era basata sulla lettura this SO question, ma produce un quadrato restringente che ruota intorno all'asse x definito dal fondo della casella iniziale.
Capisco che matrice CSS 2D in grado di produrre solo rettangoli e parallelogrammi dalla trasformazione di una scatola e che le forme irregolari bisogno del Matrix3D trasformare operazione (this è stato utile per rinfrescare la mia dissolvenza algebra lineare!), Ma mi sembra di essere solo in grado per produrre rettangoli e parallelogrammi.
Ho dato un'occhiata ad alcune delle domande SO contrassegnate con matrix
e transformation
. Molti di questi non sono basati su CSS e non sono stato in grado di ottenere la trasformazione che voglio.
ho creato uno strumento per giocherellare con i valori css di trasformazione qui: http://www.duopixel.com/ stack/webkitmatrix /, ma temo di non riuscire a produrre un trapezoide con Chrome. Provaci. – Duopixel
@Duopixel: questo è un ottimo strumento. Posso creare un trapezoide in Safari ... ma inclinato sull'asse Y e non sull'asse X spostando il cursore Riga-1, Colonna4 (il cursore in alto a destra). In Chrome, lo stesso cursore crea un parallelogramma. La mia comprensione è che dovrei spostare il cursore Row-4, Column-3 per creare il parallelogramma dell'asse X, ma non ha alcun effetto in Safari o Chrome. – beggs
Questo [CoffeeScript fiddle] (http://franklinta.com/2014/09/08/computing-css-matrix3d-transforms/#cp_embed_ifnqH) può essere utile. La pagina del blog su cui è incorporata ha anche alcune utili spiegazioni. – mbomb007