Jak wykorzystać matrix transform i inne właściwości transform CSS?

Podczas używania właściwości transform w CSS, jedną z możliwych metod jest Metoda matrix, która wymaga 6 pól wejściowych. Kod CSS wyglądałby tak...

#test{
    transform: matrix(1, 0, 0, 1, 0, 0);
}

Istnieje również kilka innych odmian(w zależności od przeglądarki)...

-ms-transform: matrix(1, 0, 0, 1, 0, 0);

-webkit-transform: matrix(1, 0, 0, 1, 0, 0);

Wiem, że wartości pokazane powyżej są wartościami zapasów dla obiektu, ale co oznaczają lub robią wszystkie liczby?

Author: Birrel, 2014-01-31

2 answers

Powyższa właściwość transformacji należy do kategorii właściwości CSS transformacje 2D . Oprócz wspomnianej powyżej metody matrix(), Istnieje kilka innych metod, które towarzyszą transformacji:

translate(), rotate(), scale() i skew()

Aby zrozumieć metodę matrix(), najlepiej najpierw zrozumieć pozostałe cztery typy.

Transformaty:

Te cztery metody transformacji są dokładnie takie, jak dźwięk.

Tłumaczenie:

Sprawdź przykład tłumaczenia tutaj .

translate(e, f) przyjmuje dwa argumenty. Pierwszym argumentem jest pozycja x elementu, podczas gdy drugim jest pozycja y-oba względem jego początkowego położenia. Jeśli chcesz przenieść element 50px w prawo i 100px w dół, CSS wyglądałby jak transform: translate(50px, 100px);. Dodatnie X jest prawe, dodatnie Y jest w dół; liczby ujemne przesuwają element w przeciwnym kierunek.

Tłumacz

ROTATE:

zobacz przykład rotate tutaj .

rotate(c) bierze w jednym argumencie, czyli ilość rotacji, którą chcesz mieć element. Dodatni obrót jest zgodny z ruchem wskazówek zegara, ujemny jest przeciwnie do ruchu wskazówek zegara. Obracanie elementu o 30 stopni zgodnie z ruchem wskazówek zegara (dodatnie) wyglądałoby jak transform: rotate(30deg);. Zauważ, że tym razem argument jest w deg i , a nie px.

Obróć

Skala:

zobacz przykład skali tutaj .

scale(a, d) przyjmuje dwa argumenty. Pierwszy argument to kwota do skalowania w kierunku X, podczas gdy drugi argument to kwota do skalowania w kierunku Y. Skalowanie działa przez pomnożenie bieżącej wartości (szerokość, wysokość) przez wartość skali. Skalowanie elementu 2 razy w kierunku X i 4 razy w kierunku Y wygląd transform: scale(2, 4);. Argumentami mogą być dowolne wartości, w tym dziesiętne, a nawet ujemne. Wartości ujemne mają wpływ na przewrócenie elementu wokół odpowiedniej osi.

Skala

zobacz przykład pochylenia tutaj .

skew(b, c) jest potencjalnie najbardziej mylącą transformacją do wyjaśnienia. skew(c, d) przyjmuje dwa argumenty. Pierwszy argument odpowiada powierzchniom poziomym (góra i dół), natomiast drugi argument odpowiada powierzchni pionowej (lewej i prawej). Oba argumenty znajdują się w deg, podobnie jak w rotate(). Wartości dodatnie dla pierwszego argumentu obrócą powierzchnie pionowe w kierunku przeciwnym do ruchu wskazówek zegara wokół ich punktów środkowych. Wartości ujemne obrócą pionowe powierzchnie zgodnie z ruchem wskazówek zegara wokół ich punktów środkowych. Wartości dodatnie dla drugiego argumentu obracają powierzchnie poziome zgodnie z ruchem wskazówek zegara wokół ich punktów środkowych, natomiast wartości ujemne obracają powierzchnie poziome powierzchnie przeciwnie do ruchu wskazówek zegara. Limit (w deg) dla każdego argumentu wynosi + - 90deg - jak pokazano w poniższym przykładzie.

Skew

Macierz:

zobacz przykład macierzy tutaj .

matrix(a, b, c, d, e, f) robi wszystko, co wcześniej wymienione przekształcenie.

Dwa argumenty, a i {[21] } są dla skalowania elementu w kierunku X i kierunku Y, odpowiednio. identycznie jak z metoda scale(a, d).

Drugi i trzeci argument b i {[24] } służą do wypaczania elementu. Obie wartości działają identycznie jak w metodzie skew(b, c).

Wreszcie, dwa ostatnie argumenty e i {[27] } są dla tłumaczenia elementu w kierunku X i kierunku Y, odpowiednio. identycznie do metody translate(e, f).

Możesz użyć transformacji matrix(), aby osiągnąć niesamowite efekty. Zobacz też ta strona, gdzie przewinięcie strony w dół (na komputerach, a nie urządzeniach mobilnych) powoduje transformację elementów na stronie za pomocą metody matrix(). Daje świetny efekt!

Wreszcie, istnieją różne składnie dla różnych przeglądarek. Według w3schools tutaj są następujące

transform:
-ms-transform: /* IE 9 */
-webkit-transform: /* Safari and Chrome */

Najlepszą praktyką jest przetestowanie ich na różnych przeglądarkach przed uruchomieniem witryny.

Aby uzyskać więcej informacji o różnych transformacjach 2D, sprawdź ten link . Dla matematyki za matrix() Metoda, sprawdź ten link .

 78
Author: Birrel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-19 02:50:05

Zamiast spędzać czas próbując owinąć głowę wokół macierzy, gdy nie masz matematycznego tła, zalecam zrozumienie innych przekształceń i umiejętność łączenia ich w jedną linię, ponieważ jeśli spróbujesz je rozdzielić, wykonywana jest tylko ostatnia dyrektywa.

Zamiast tego

#shape {
    transform: rotate(40deg);
    transform: translate(100px, 30px);
    transform: scale(0.8, 0.4);
}

Zrób to zamiast:

#shape {
    transform: rotate(40deg) translate(100px, 30px) scale(0.8, 0.4)
}

I to daje Ci pożądany rezultat, który możesz owinąć głową i ma tyle samo mocy, co matrix.

 3
Author: djynnius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-13 22:28:49