2010-11-04 18 views
15

Tengo el siguiente fragmento que alterna el relleno cuando se pasa (véase el ejemplo here):jQuery Animate relleno a cero

<div id="outer"><div id="inner"></div></div> 
<script> 
    $("#inner").mouseenter(function() { 
    $("#outer").animate({ 'padding' : '20px' }, "slow"); 
    }); 
    $("#inner").mouseleave(function() { 
    $("#outer").animate({ 'padding' : '0px' }, "slow"); 
    }); 
</script> 

El objetivo es tener el relleno animar tanto dentro como fuera, sin embargo actualmente no aparece ninguna animación para animando. Hice algunas pruebas, y si cambio el margen de permiso a 10 píxeles (desde 0 píxeles) ejecuta una animación, pero comienza en cero y se anima hacia afuera. Estoy ejecutando jQuery 1.4.3. Cualquier forma de arreglar esto?

+0

No estoy seguro de lo que está pasando, pero en lugar de animar un atributo 'margin' para el elemento interno ¿funciona? –

+0

@Freek, no si el div externo tiene dimensiones definidas ... empujaría los extremos hacia la izquierda/arriba, pero se rompería fuera del exterior, ya que el exterior no se puede expandir debido a las dimensiones definidas. –

+0

@Gaby point taken :) –

Respuesta

26

Sin duda un error de animación en 1.4.3, por ahora se puede trabajar en torno al animar las propiedades individuales como este:

$("#inner").mouseleave(function() { 
    $("#outer").animate({ 
    'padding-top' : 0, 
    'padding-right' : 0, 
    'padding-bottom' : 0, 
    'padding-left' : 0, 
    }, "slow"); 
}); 

You can test it out here.

+0

Gracias Nick! Siempre aprecia tus respuestas muy precisas. ¡Además, herramienta genial para demostraciones de código! –

+0

el error existe en el sentido de que no almacena el relleno después de la animación de alguna manera ... incluso si quita el mouse por completo, hay un problema cuando vuelve a ingresar el div. La animación comienza de nuevo. –

+0

@Gaby: creo que eso se debe a que la posición del mouse se está moviendo hacia adentro, aunque no estoy seguro de por qué se está eliminando ... Voy a tomar algo de sueño o café aquí, luego veré dónde está está sucediendo –

5

Parece un error en 1.4.3 (reescrito parte de css). 1.4.2 funciona bien:

http://www.jsfiddle.net/YjC6y/44/

voy a investigar más a fondo y actualizar este post.

+0

Gracias Andy. ¡Agradezco la confirmación de que es un error! –

0

Me acabo de dar cuenta de jQuery no está reaccionando muy bien a los guiones "-" dentro de la animación, pero se obtiene el mismo resultado por conseguir paseo de la guión y mayúsculas en la primera letra después. Así que para usted tendrá algo como esto:

$("#inner").mouseleave(function() { 
     $("#outer").animate({ 
    paddingTop : 0, 
     paddingRight : 0, 
     paddingBottom : 0, 
     paddingLeft : 0, 
     borderLeftWidth: 0, 
     borderTopWidth: 0, 
     borderRightWidth: 0, 
     borderBottomWidth: 0, 

}, slow); 
Cuestiones relacionadas