2010-07-08 13 views
9

sto usando il cycle plugin su alcuni div, in questo modo:jQuery Cycle plugin - altezza automatica per contenitori

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

tutti i div .section hanno altezza variabile, in base ai loro contenuti. Come posso fare in modo che il ciclo non ridimensiona il contenitore div (sezioni) all'altezza figlio più grande? Invece voglio il ridimensionamento del contenitore su ogni animazione all'altezza attuale del bambino.

+0

Qual è il tuo codice CSS attuale? – Marko

+0

non ci sono css per .sections/.section. Dovrei aggiungere qualche CSS? l'html sopra si trova nella barra laterale della pagina. Sotto di esso si possono aggiungere altri contenuti, ecco perché ho bisogno del container con altezza automatica – Alex

risposta

12

imposta l'opzione containerResize su 0 e prova. Altri dettagli opzione here.

+2

È necessario utilizzare la versione completa, non lite. – eveevans

21

ok, sono riuscito a farlo agganciando una funzione su 'dopo' 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}); 
} 

trovato le info qui: http://forum.jquery.com/topic/jquery-cycle-auto-height

+1

Questo è ottimo, ma come posso ottenere il ciclo per ricalcolare di nuovo l'altezza dopo aver aggiunto il contenuto in linea in modo dinamico? – Florian

1

ho fatto un po 'diverso:

$('.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()); 
    } 
    }); 

I miei articoli avevano un'altezza diversa. Nel precedente, si assicura che il contenitore sia abbastanza grande per la più grande delle 2 diapositive. Nel dopo, si ridimensiona alla diapositiva successiva. In questo modo non scorre mai troppo perché il tuo contenitore è troppo piccolo.

nota: questo è per il ciclo 1