Una pregunta antigua pero interesante y sin respuesta previa ha intentado responderla.
Lamentablemente, no existe una solución de dos líneas para el caso general y no sabemos qué variedad de pasos de transformación (rotar, traducir, etc.) necesitan ingeniería inversa; cuanto menos, más fácil.
En los navegadores basados en WebKit recientes, simplemente se puede consultar la propiedad previamente asignada:
var element = document.querySelector('div.slipping');
element.style.webkitTransform
-> "translate(-464px, 0px)"
Vamos a continuar con la suposición de que el estilo computarizada necesita ser utilizado. Surge la necesidad, por ejemplo, si el elemento está en el medio de una transición CSS o animación CSS, es decir, la transformación actual no es una que se estableció directamente.
La cadena de descriptor de matriz devuelta por getComputedStyle se puede analizar a través de una expresión regular, pero no todas las versiones anteriores son confiables y son demasiado opacas.Una forma sencilla de romper la cadena, a menos que sea en un bucle muy estrecho como para justificar una expresión regular de un solo paso, es la siguiente:
var matrixString = window.getComputedStyle(element).webkitTransform;
var matrix = matrixString
.split('(')[1]
.split(')')[0]
.split(',')
.map(parseFloat);
Sin embargo, otra forma es utilizar simplemente esto, que no fue mencionado antes:
var cssMatrix = new WebKitCSSMatrix(matrixString);
la ventaja de este último enfoque es que vuelvas una matriz de 4x4, así, que es la representación estándar para affine transformations, y el inconveniente es que es por supuesto WebKit específica. Si continúa trabajando con la tupla de seis valores como en la pregunta, se define in this part of the CSS standard.
Luego la transformación, p. Ej. la rotación debe ser de ingeniería inversa. Puede haber muchas transformaciones simples directamente soportadas por CSS, p. Ej. traducir, escalar, girar, sesgar y perspectiva. Si solo se aplica uno de ellos, solo necesita revertir el proceso de computing the transform matrix.
Una alternativa es encontrar o traducir el código que hace esto por usted en JS, p. the same document o Section 7.1 of the CSS standard contiene dichos algoritmos anotados. El beneficio es que el enfoque unmatrix puede, con algunas limitaciones, devolver las transformaciones "atómicas" incluso si se aplica más de una de ellas (traducir, girar, etc.). Como no es posible garantizar la ingeniería inversa exitosa de los pasos de transformación para el caso general, es útil pensar qué tipos de transformaciones posiblemente se apliquen, y si se han evitado casos problemáticos o degenerados. Es decir. necesita construir la solución como mejor le parezca para su problema.
Específicamente, las versiones matriciales de todas las transformaciones CSS 2D son documented here as well, por debajo del significado de los seis valores en el vector de transformación CSS 2D.
Otra advertencia es que hay otras cosas que influyen en el resultado visual en términos de operaciones geométricas, por ejemplo, transform-origin.
-webkit transformada no es un atributo, por lo que no se puede acceder a él a través de atributos, debe acceder estilo objeto asociado con el elemento. – shabunc