9
votes

jQuery - Hauteur dynamique div

J'essaie de redimensionner un DIV sur PAGELOAD et redimensionner la fenêtre. Le code ci-dessous est placé avant , et cela fonctionne bien sur pageload, mais rien sur la fenêtre ne redimensionne. J'ai testé la fonction de redimensionnement avec une alerte qui déclenche un redimensionnement, mais la hauteur reste inchangée. XXX


MISE À JOUR: après une longue pause, je ' J'ai découvert ce qui cause le problème. J'utilise un script jQuery pour ajouter une barre de défilement de style sur le même div le redimensionnement. Quand je le commente, tout redimensionne bien. J'ai déplacé l'initialisation de la barre de défilement dans la même fonction que de redimensionner et j'ai essayé toutes les variations que je peux penser .. Je ne peux toujours pas le faire fonctionner.

(le contenu principal de la carte principale a également. Classe de volet de défilement) xxx


0 commentaires

3 Réponses :


5
votes

Notez que la fonction redimensionner la fonction ne tire que des incendies une fois, une fois la fenêtre redimensionnée. Il ne met pas à jour lors de l'opération de redimensionnement. Si vous faites glisser la bordure de la fenêtre pour le tester, aucune modification ne se produira avant de laisser tomber le bouton de la souris.

Aussi, assurez-vous de le faire dans $ ( Document) .Readady () , comme celui-ci: xxx

voici un Démo de travail .


4 commentaires

Merci d'avoir clarifié le sujet, mais je n'ai toujours pas résolu le problème. Lorsque j'utilise votre code, le réglage de la taille ne fonctionne pas sur la charge ou le redimensionnement. Je ne sais pas pourquoi, puisque ton exemple fonctionne parfaitement! Si vous avez des idées comme ce qui peut interférer, veuillez répondre ..


@Lemon, testez-vous cela dans IE? J'ai eu des problèmes de redimensionnement des divs avec la méthode de hauteur CSS dans IE - I pense la solution consiste à définir une hauteur par défaut pour la DIV.


La fenêtre redimensionne l'événement déclenche à différents intervalles en fonction du navigateur. Pour (au moins les versions plus anciennes de mon expérience), c'est-à-dire qu'il incendie pour toutes les actions de redimensionnement possibles (puis certains), pour Firefox, il s'agit d'événements basés sur les ressources disponibles, et pour safari, il les incite systématiquement à intervalles réguliers environ 100- 200ms, en fonction de l'action (il est similaire au modèle de Firefox, mais incendie beaucoup moins fréquemment).


Merci beaucoup. Cela m'a aidé à me débarrasser du saut horizontal, qui se produit lorsqu'une barre de défilement est nécessaire. Avec ce code et un peu de CSS, j'ai pu éliminer le saut horizontal sans forcer les barres de défilement.



14
votes

résolu!

Tout ce dont il a besoin était de retirer Jscrollpane avant de calculer la hauteur et de la réappliquer. P>

<script type='text/javascript'>
$(function(){
    $('.scroll-pane').css({'height':(($(window).height())-361)+'px'});
    $('#main-content').jScrollPane({scrollbarWidth:15, scrollbarMargin:15});

    $(window).resize(function(){
          $('.scroll-pane').jScrollPaneRemove();
          $('#main-content').css({'height':(($(window).height())-361)+'px'});
          $('.scroll-pane').jScrollPane({scrollbarWidth:15, scrollbarMargin:15});
    });
});
</script>


2 commentaires

Hey, j'essayais de faire une hauteur dynamique pour un div dans mon application et j'ai utilisé votre code (je viens de supprimer le STUF sur le volet de défilement). :) belle solution.


Company TypeError: $ (...). Jscrollpane n'est pas une fonction ... Quoi de JScrollPane ? Son plugin?



1
votes

Ne pas exécuter la fonction à moins que la hauteur du document ne soit inférieure ou égale à la hauteur de la fenêtre.

$(function() {
  if($(document).height() <= $(window).height()) {
    $('#wrapper').css({ 'height': ($(window).height()) });
    $(window).resize(function(){
      $('#wrapper').css({ 'height': ($(window).height()) });
    });
  }
});


0 commentaires