2009-10-09 9 views
0

J'ai une barre latérale sur ma page que je veux toujours être 100% de la taille du conteneur. Malheureusement, je ne peux pas dire à l'élément de le faire via CSS seul, car la hauteur de la page est variable en raison du contenu dynamique.Utiliser jQuery pour mettre en miroir la hauteur d'un élément dynamique

Est-il possible d'utiliser jQuery pour trouver la hauteur du conteneur de contenu et ajuster la hauteur de la barre latérale pour qu'il corresponde à celle-ci?

J'ai trouvé quelques plugins jQuery qui font ce que je veux, mais je pense qu'ils sont trop compliqués (et je n'arrive pas à les faire fonctionner quand même!).

+0

essayez de mettre le contenu et la hauteur dans une seule division avec à la fois la hauteur définie à 100% et mettre le css au bas de votre page ... – halocursed

+0

@halocursed Pourquoi CSS au bas de la page? – alex

Répondre

0

En supposant que l'ID de votre conteneur est « conteneur » et l'identifiant de votre barre latérale est « sidebar », vous pouvez essayer ce qui suit (non testé!)

$(document).ready(function() { 
    $('#sidebar').height($('#container').height()); 
}); 

Cela devrait (la charge du document), redimensionner la hauteur de la barre latérale est la même que la hauteur du conteneur.

+0

Notez que si vous avez quelque chose qui redimensionne la page (peut-être avec 'slideDown'), vous devrez rappeler ce code. – alex

+0

@alex: C'est très vrai. Bon point. – Damovisa

0

Je vais continuer de Damovisa's answer.

$(document).resize(function(){ 
    $('#sidebar').height($('#container').height()); 
}); 

Cependant, cela pourrait tirer énormément si vous redimensionnez la page beaucoup. Vous pouvez essayer ceci

$(document).resize(function(){   
     clearTimeout(resizeTimeout); 
     resizeTimeout = setTimeout(function() { 
      $('#sidebar').height($('#container').height()); 
     }, 100); 
    }); 

Dans le deuxième exemple, il ne sera redimensionné que 100 microsecondes après le redimensionnement.

Ceci suppose également que $(document).resize() sera déclenché lorsque la taille de la page change. Vous pouvez toujours l'envelopper dans une fonction, et l'appeler à la fin de tout slideDown() etc

+0

Assez bonne solution. Je suppose que la solution idéale dépend vraiment de ce qui peut changer la taille du conteneur. – Damovisa

+0

Au lieu d'écouter un document redimensionner, pourquoi ne pas lier à une fenêtre redimensionner? –

+0

Je ne suis pas sûr si cela signifie que l'utilisateur redimensionne réellement le cadre de la fenêtre, ou que la fenêtre d'affichage change de quelque chose de plus en plus grand. Je suppose que je dois le tester. – alex

Questions connexes