Say div ma to zastosowanie do niego:Uzyskaj wartości translate3d elementu div?
-webkit-transform: translate3d(0px, -200px, 0px)
Jak mogę odzyskać te wartości z jQuery?
Say div ma to zastosowanie do niego:Uzyskaj wartości translate3d elementu div?
-webkit-transform: translate3d(0px, -200px, 0px)
Jak mogę odzyskać te wartości z jQuery?
Wartość zostanie zapisana jako matrix
lub , w zależności od tego, czy wartość z została ustawiona. Zakładając, że nie ma innych transformacji, dla matrycy 2D X i Y są ostatnimi dwiema wartościami. W przypadku macierzy 3D X, Y, Z, 1 to ostatnie cztery cyfry.
Można użyć wyrażenia regularnego, aby uzyskać wartości:
function getTransform(el) {
var results = $(el).css('-webkit-transform').match(/matrix(?:(3d)\(\d+(?:, \d+)*(?:, (\d+))(?:, (\d+))(?:, (\d+)), \d+\)|\(\d+(?:, \d+)*(?:, (\d+))(?:, (\d+))\))/)
if(!results) return [0, 0, 0];
if(results[1] == '3d') return results.slice(2,5);
results.push(0);
return results.slice(5, 8);
}
EDYCJA: To źle, zignoruj to.
Myślę, że jeśli można zrobić coś jak ...
var styles = $('.myclass').css('-webkit-transform');
Pewnie można uzyskać translate3d(0px, -200px, 0px)
plecy.
Może mógłbyś następnie sparsować ten ciąg? wydaje się jednak trochę hack.
Nie, otrzymasz matrycę w następujący sposób: 'matrix (-1, -0,00000000000000012246467991473532, 0.00000000000000012246467991473532, -1, 0, 0)' – ProblemsOfSumit
ah w prawo! uch! Dlatego powiedziałem * myślę *, * prawdopodobnie * i * może * :) – simonlchilds
Jeśli mecz() wzór Zaakceptowanych odpowiedź na zmianę tego dodaje wsparcie dla liczb ujemnych:
$(el).css('-webkit-transform').match(/matrix(?:(3d)\(-{0,1}\d+(?:, -{0,1}\d+)*(?:, (-{0,1}\d+))(?:, (-{0,1}\d+))(?:, (-{0,1}\d+)), -{0,1}\d+\)|\(-{0,1}\d+(?:, -{0,1}\d+)*(?:, (-{0,1}\d+))(?:, (-{0,1}\d+))\))/)
to jest zwracanie wartości null w moim przypadku –
Jeśli zaktualizuj wyrażenie regularne do następujących dodaje obsługę dla tych nieparzystych przypadków, gdy twoja transformacja ma pływa:
/matrix(?:(3d)\(-{0,1}\d+\.?\d*(?:, -{0,1}\d+\.?\d*)*(?:, (-{0,1}\d+\.?\d*))(?:, (-{0,1}\d+\.?\d*))(?:, (-{0,1}\d+\.?\d*)), -{0,1}\d+\.?\d*\)|\(-{0,1}\d+\.?\d*(?:, -{0,1}\d+\.?\d*)*(?:, (-{0,1}\d+\.?\d*))(?:, (-{0,1}\d+\.?\d*))\))/
Czy próbowałeś użyć ['jQuery.css'] (http://api.jquery.com/css)? – namuol