Comment faire pour conserver plusieurs DIVs la même hauteur à l'aide de jQuery?
J'ai un peu de balises DIV avec différentes quantités de contenu de texte.
HTML:
<div id="boxes">
<div id="boxone">
<p>...</p>
</div>
<div id="boxtwo">
<p>...</p>
</div>
<div id="boxthree">
<p>...</p>
</div>
<div id="boxfour">
<p>...</p>
</div>
</div>
Ils sont dans un deux-par-deux mise en page et leur largeur est fluide:
CSS:
div#boxes {
width: 100%;
}
div#boxes div {
width: 49.9%;
float: left;
}
Je les veux toutes la même hauteur.
Donc, je boucle à travers eux et de trouver la hauteur de la plus haute un. Ensuite je boucle encore et de les mettre tous à la hauteur.
jQuery:
$(function() {
var maxHeight = 0;
$('div#boxes div').each(function(){
if (maxHeight < $(this).height()) {maxHeight = $(this).height()}
});
$('div#boxes div').each(function(){
$(this).height(maxHeight);
});
});
Cela fonctionne bien si la hauteur de la div n'a pas besoin de changer à nouveau.
Mais, il échoue si je redimensionner la fenêtre du navigateur:
-
Si I (a) de rendre le navigateur plus large, puis (b) mon
DIVs plus large, puis (c) leur texte
le contenu des enveloppements de moins en moins de temps, et puis (d)
mes DIVs sont trop hauts. -
Si j' (b) rendre le navigateur plus étroite,
puis (b) mes DIVs rétrécissent, puis (c)
leur contenu texte enveloppements plus, et
puis (d) mes DIVs sont trop courtes.
Comment puis-je à la fois (1) automatiquement à la taille de DIVs à la hauteur de leur contenu, comme d'habitude, mais aussi (2) conserver ces multiples DIVs la même hauteur?
Vous devez vous connecter pour publier un commentaire.
Mise à jour... la réécriture complète de cette réponse à l'issue d'expérimenter et de trouver un autre, apparemment pratiques pour ce faire:
Une chose que j'ai remarqué, c'est que IE a vraiment l'arrondissement des problèmes avec 50% de largeur flottait divs... le rendu est beaucoup mieux si j'ai changé ceux de 49%.
Cette jQuery fonctionne...
Pour les autres qui, comme moi, sont venus ici en cherchant sur Google une solution: La première partie de la accepté de répondre ne fonctionne que lorsque le premier div est le plus élevé. J'ai fait quelques modifications, et maintenant il semble fonctionner dans tous les cas.
Découvrez ce Plugin jQuery qui vous permet de surveiller une propriété CSS comme la hauteur.
Si vous le souhaitez lors du redimensionnement, etc... de Faire comme ceci:
J'ai trouvé cette solution pour être un peu plus coquette pour ma situation. Il fonctionne indépendamment de la div est le plus élevé. En se basant sur ce vieux Chris Coyier poste à CSS Astuces.
Cependant, je n'ai besoin de régler la hauteur de l'auto sur les redimensionner avant d'exécuter à nouveau la fonction. Je n'ai pas besoin de le mettre dans la fonction d'origine parce qu'elle a été définie dans le css.