He creado una prueba rápida para mostrar lo que estoy tratando de hacer:¿Cómo puedo establecer la duración de esta animación jQuery proporcionalmente?
Si hace clic en el botón "Activar Ancho" una vez, un cuadrado tendrá un segundo para crecer a lo ancho . Haga clic de nuevo, y tomará un segundo encoger hasta el ancho cero.
Sin embargo, haga clic en el botón "Alternar ancho" dos veces en rápida sucesión; la segunda vez cuando el cuadrado ha crecido a solo una pequeña fracción de su ancho total (como 10%), notará que la animación todavía tarda un segundo completo para devolver el cuadrado al ancho cero, lo que parece incómodo, IMO.
Aunque se espera que este comportamiento, me gustaría que la última animación ocurra en una cantidad de tiempo que es proporcional al ancho que está cubriendo. En otras palabras, si hace clic en "Alternar ancho" una segunda vez cuando el cuadrado está al 10% de su ancho total, me gustaría que tardara aproximadamente 1/10 de segundo para reducir de nuevo al ancho cero.
Debería ser relativamente fácil (creo) hacer que el valor de la propiedad duration
sea dinámico, calculado cuando se ejecuta el manejador jQuery click
, para medir el ancho actual del cuadrado y determinar la duración en consecuencia.
Sin embargo, ¿me falta una forma mejor de hacerlo? ¿JQuery proporciona una manera fácil o expone algún tipo de método o propiedad para facilitar esto?
Recomiendo solo hacer los cálculos. No es tan complejo: http://jsfiddle.net/zY3HH/2/ – aroth
¡Oye, eso funciona genial! Eso es bastante conciso y fácil de seguir, también. Pensé que podría haber una solución que aprovechó una propiedad/método expuesto por jQuery, pero no puedo imaginar que sea más simple que esto en general. ¿Puedes agregar tu comentario como respuesta para poder aceptarlo? ¡Gracias de nuevo! – Bungle
De acuerdo, agregué esto como respuesta a continuación. – aroth