estoy recibiendo -moz-transform: translate(-283.589px, 0px)
de dom haciendo element.style[vendor + 'Transform']
. Ahora quiero extraer el valor -283.589px
para usarlo en mi aplicación pero no obtener la forma exacta de recuperarlo. Si lo hago console.log($('.slide').css("-moz-transform"))
devuelve el valor de la matriz como matrix(1, 0, 0, 1, -283.589px, 0px)
. ¿Hay una forma adecuada en jquery para obtener directamente el valor -283.589px
? No quiero hacer ningún cálculo matricial.Fetch el valor css de transformar directamente usando jQuery
Respuesta
Tengo buenas y malas noticias.
Comenzaré con la mala noticia: después de examinar el objeto que jQuery devuelve, el objeto matrix
no es más que una cadena y no hay absolutamente ninguna manera de obtener otro objeto, sino una cadena. Por mucho que nos gustaría no estar de acuerdo con que no debe ser una cadena: los valores CSS son cadenas, por lo tanto, jQuery devuelve cadenas.
lo tanto, si te gusta o no, que realmente tiene que analizar la cadena con el fin de obtener el valor. La buena noticia es: tengo dos soluciones.
Ahora, si estás muy seguro de que el primer par de valores son siempre los mismos simplemente podría utilizar subcadena. Pero, siguiente problema: en Google Chrome, el valor -283.589px
se cambia a -283.5889892578125
.
verdad, se necesita un analizador de cadena más avanzada para obtener el valor correcto. Doy la bienvenida a la expresión regular:
var matrix = $('.selector').css('-moz-transform');
var values = matrix.match(/-?[\d\.]+/g);
Esto obtiene todos los valores de su cadena.
Al seleccionar el índice derecho, puede obtener su valor:
var x = values[5];
Esa es la mejor solución que puedo ofrecer y estoy positivo que es la única solución posible.
Esto no funciona con negativos;) 'matriz (1, 0, 0, 1, -770, 0) === [1, 0, 0, 1, 700, 0] ' – yckart
@yckart ¡Me olvidé por completo de eso! También cambié la expresión para que coincida con los números negativos, ¡gracias! –
O podría encontrar la primera llave y usar división: 'var matriz = $ ('. Selector'). Css ('transformada'), idx = matriz.indexOf ('('), valores = matriz.subsistencia (idx +1, matrix.length-1) .split (';'); 'Apuesto a que se comporta mejor. –
usando var matrix = $('.selector').css('-moz-transform');
,
matrix.match(/([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/);
le daría un objeto con {0, 1, 2, índice, entrada}
[1] = x, [2] = y
desde que constantemente necesito usar jQuery junto con TweenMax y desde TweenMax ya se hizo cargo de todo el análisis de diversos tipos de cadenas de transformación, así como los problemas de compatibilidad, que escribió un pequeño plugin de jQuery here (más de una envoltura de GSAP de) que podrían acceder directamente a estos valores s como este:
$('#ele').transform('rotationX') // returns 0
$('#ele').transform('x') // returns value of translate-x
la lista de propiedades que usted podría conseguir/set, junto con sus propiedades iniciales:
perspective: 0
rotation: 0
rotationX: 0
rotationY: 0
scaleX: 1
scaleY: 1
scaleZ: 1
skewX: 0
skewY: 0
x: 0
y: 0
z: 0
zOrigin: 0
Gracias por este. Bower usado para instalarlo en un proyecto de rieles y funciona muy bien! Mucho más limpio que las otras respuestas aquí. es conveniente para usar con gsap. – Starfs
Mientras que jQuery no puede hacer esto por sí solo, un método de expresión regular sería mejor.
En el código debajo de los parseComplexStyleProperty
funciones toma una cadena que es, por ejemplo, el atributo style
de un elemento y lo rompe en un objeto de claves y valores:
function parseComplexStyleProperty(str){
var regex = /(\w+)\((.+?)\)/g,
transform = {},
match;
while(match = regex.exec(str))
transform[match[1]] = match[2];
return transform;
}
//////////////////////////////////////////
var dummyString = $('something').attr('style'),
transformObj = parseComplexStyleProperty(dummyString);
console.log(dummyString, transformObj)
- 1. ¿Cómo verifico el valor de css usando jQuery?
- 2. cómo obtener el valor del estilo CSS usando jquery
- 3. jQuery agregar el valor de css incrementalmente
- 4. Obtenga el valor de css de: hover con .css() - jquery
- 5. Cómo cambiar CSS del elemento usando jQuery
- 6. jQuery rotar/transformar
- 7. ¿Cómo desactivo el atributo CSS de un elemento usando jQuery?
- 8. Establezca el valor de enlace directamente
- 9. obtener el valor de div izquierdo y derecho usando jquery
- 10. Cómo cargar CSS usando jquery
- 11. CSS Transformar el cuadrado en un rombo más delgado
- 12. añadir regla CSS usando jQuery
- 13. Usando retraso jQuery() con css()
- 14. ¿Cómo puedo obtener el valor CSS heredado usando Javascript?
- 15. css transformar sin sobrescribir la transformación anterior?
- 16. ¿Cómo obtener el valor de una propiedad CSS utilizando JQuery?
- 17. Jquery if then sentencia para el valor de css
- 18. configurar el fondo de imagen usando jQuery CSS propiedad
- 19. Evento desencadenante usando Jquery en cambio CSS?
- 20. ¿Es una buena práctica anular fetch() y guardar() directamente desde el modelo?
- 21. .css de jQuery() aplicación
- 22. ¿Cómo obtener el valor de href usando jQuery?
- 23. cómo obtener el valor de casilla múltiple usando jquery
- 24. Obtenga el valor de un asp: HiddenField usando jQuery
- 25. Establezca el valor de un campo oculto usando JQuery
- 26. ¿Cómo puedo establecer el valor de DropDownList usando jQuery?
- 27. La actualización del valor del atributo de datos usando jQuery
- 28. Fetch-and-add usando las operaciones atómicas de OpenMP
- 29. Cambiar Seleccionar valor usando jQuery Uniform.js
- 30. JQuery - Obtener valor usando un selector
usted don' Necesito calcular algo porque el valor está ahí ... –
El valor está aquí, pero ¿cómo puedo usarlo? Quiero hacer algo como $ ('id'). Animado (izquierda: X); donde X = -283.589px. Esto es lo que quiero. – user850234
¿no puedes acceder a la matriz como una matriz? 'var x = matrix [5];' –