Próbuję użyć funkcji obsługi skryptów CSS3 transform: matrix3d(<matrix>)
, aby utworzyć efekt "spadającej karty". (Jedynym celem wyjściu jest chrom)Prostokąt CSS3 matrix3d na transformację trapezową
Efekt końcowy powinien przejść przez 4 etapach poniżej i kończy się w odległości poziomej linii:
Oto CSS mam teraz:
#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);}
}
I HTML jest prosty do testowania:
<body>
<div id="test">this div should fall forward...</div>
</body>
Macierz3d w powyższym została oparta na odczycie this SO question, ale powoduje powstanie kurczącego się kwadratu, który obraca się wokół osi X zdefiniowanej przez dolną część początkowego okna.
Rozumiem, że macierz CSS 2d może generować tylko prostokąty i równoległoboki poprzez transformację pola, a nieregularne kształty wymagają operacji przekształcenia matrix3d (this był pomocny w odświeżaniu mojej zanikającej algebry liniowej!), Ale wydaje mi się, że mogę tylko do tworzenia prostokątów i równoległoboków.
Rozejrzałem się po kilku pytaniach SO oznaczonych matrix
i transformation
. Większość z nich nie jest oparta na CSS i nie byłem w stanie uzyskać transformacji, której pragnę.
stworzyłem narzędzie do Fiddle z wartościami transformacji CSS tutaj: http://www.duopixel.com/ stack/webkitmatrix /, ale obawiam się, że nie mogę utworzyć trapezu w Chrome. Spróbuj. – Duopixel
@Duopixel: to wspaniałe narzędzie. Potrafię zrobić trapezoid w Safari ... ale przekrzywiony na osi Y, a nie na osi X, przesuwając suwak Row-1, Column4 (suwak w prawym górnym rogu). W Chrome ten sam suwak tworzy równoległobok. Rozumiem, że powinienem przesuwać suwak Row-4, Column-3, aby utworzyć równoległobok w osi X, ale nie działa on w Safari ani w Chrome. – beggs
Może to być przydatne [skrzypce CoffeeScript] (http://franklinta.com/2014/09/08/computing-css-matrix3d-transforms/#cp_embed_ifnqH). Strona bloga, w której jest osadzona, ma również kilka użytecznych wyjaśnień. – mbomb007