2011-11-02 14 views

Odpowiedz

10

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); 
} 
+3

Możesz po prostu uzyskać 'css ('transform')' teraz, ponieważ jQuery normalizuje przedrostki dostawców. – Soviut

+1

Jak wspomniano w odpowiedzi Trevora, NIE działa to dla wartości ujemnych !! – Larzan

0

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.

+1

Nie, otrzymasz matrycę w następujący sposób: 'matrix (-1, -0,00000000000000012246467991473532, 0.00000000000000012246467991473532, -1, 0, 0)' – ProblemsOfSumit

+1

ah w prawo! uch! Dlatego powiedziałem * myślę *, * prawdopodobnie * i * może * :) – simonlchilds

9

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+))\))/) 
+0

to jest zwracanie wartości null w moim przypadku –

1

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*))\))/ 
Powiązane problemy