top remove animate jquery animation slide

remove - jQuery animate height



remove animation jquery (3)

Tengo un botón y un div con dentro de un texto:

<h2>Click me</h2> <div class="expand">Lot of text here....</div>

Quiero mostrar solo 2 filas del texto por defecto, así que coloco la altura a 30px y desbordé Oculto.

Cuando hago clic en el elemento H2 quiero animar el texto para que se deslice hacia abajo y si hago clic en otra ocasión, se deslizará hacia arriba a la altura predeterminada (30px).

Estoy probando muchas cosas con jQuery, pero no funciona.

EDITAR:

También tengo más de una "expansión" y más de una "H2" y el texto es diferente en div, por lo que la altura no es fija ... Me gustaría deslizarla a la altura "automática" o al 100%.

¿Alguien me puede ayudar? ¡Gracias!


Este hilo no es el más nuevo, pero aquí hay otro enfoque.

He estado lidiando con el mismo problema hoy y no pude hacerlo funcionar correctamente. Incluso con la altura correcta calculada con la height: auto aplicada, la animación no me daría los resultados correctos. Intenté ponerlo en $(window).load lugar de $(document).ready , lo que ayudó un poco, pero aún así corté mi última línea de texto.

En lugar de animar la altura, pude resolver el problema agregando y eliminando dinámicamente una clase oculta en mi división. Si utiliza jQuery-UI , puede aplicar una duración a estos efectos. Esto parece funcionar en todos los navegadores, también.

Aquí hay un ejemplo de trabajo.


La propiedad scrollHeight del elemento DOM también podría darle la altura que necesita.

$(".expand").animate({ height : $(".expand")[0].scrollHeight },2000);

El ejemplo de trabajo se puede encontrar en http://jsfiddle.net/af3xy/4/


Puede almacenar la altura justo antes de reducirla a 30px en la carga de la página, por ejemplo:

$(".expand").each(function() { $.data(this, "realHeight", $(this).height()); }).css({ overflow: "hidden", height: "30px" });

Luego en su controlador de click :

$("h2").toggle(function() { var div = $(this).next(".expand") div.animate({ height: div.data("realHeight") }, 600); }, function() { $(this).next(".expand").animate({ height: 30 }, 600); });

Entonces, lo que esto hace es obtener el .height() (ejecutarlo en document.ready ) antes del overflow: hidden su conjunto, y almacenarlo a través de $.data() , luego en los controladores de click (mediante .toggle() para alternar ), usamos ese valor (o 30) cada otro clic para .animate() para.