2010-07-08 17 views
9

Estoy utilizando el cycle plugin en algunos divs, así:jQuery Cycle Plugin - Altura automática para envases

<div class="sections"> 
    <div class="Section"> <img /> text </div> 
    <div class="Section"> <img /> text </div> 
    <div class="Section"> <img /> text </div> 
</div> 

todos los divs .Sección tienen altura variable, en función de sus contenidos. ¿Cómo puedo hacer que el ciclo no cambie el tamaño del contenedor div (secciones) a la altura del niño más grande? En su lugar, quiero que el contenedor cambie de tamaño en cada animación hasta la altura actual del niño.

+0

¿Cuál es su código CSS actual? – Marko

+0

no hay css para .sections/.section. ¿Debo agregar algún CSS? el html anterior se encuentra en la barra lateral de la página. Debajo se puede agregar otro contenido, por eso necesito el contenedor de altura automática – Alex

Respuesta

12

establece containerResize opción para 0 y prueba. Más detalles de la opción here.

+2

. Tiene que usar la versión completa, no ligera. – eveevans

21

bien, he conseguido hacerlo enganchando una función de 'después' de evento:

function onAfter(curr, next, opts, fwd) { 
    var $ht = $(this).height(); 

    //set the container's height to that of the current slide 
    $(this).parent().animate({height: $ht}); 
} 

conocer la información aquí: http://forum.jquery.com/topic/jquery-cycle-auto-height

+1

Esto es genial, pero ¿cómo puedo obtener un ciclo para volver a calcular la altura de nuevo después de agregar contenido en línea de forma dinámica? – Florian

1

lo he hecho un poco diferente:

$('.cycle-list').cycle({ 
    containerResize: 0, 
    before: function(currSlideElement, nextSlideElement, options, forwardFlag) { 
     var container = $(this).parent(); 
     container.css('height', Math.max(container.height(), $(nextSlideElement).height())); 
    }, 
    after: function(currSlideElement, nextSlideElement, options, forwardFlag) { 
     $(this).parent().css('height', $(this).height()); 
    } 
    }); 

Mis artículos tenían una altura diferente también. En el anterior, se asegura de que el contenedor sea lo suficientemente grande para la mayor de las 2 diapositivas. Después, simplemente cambia el tamaño a la siguiente diapositiva. De esta manera nunca fluye demasiado porque su contenedor es demasiado pequeño.

nota: esto es para el ciclo 1