2013-09-01 5 views
0

En essayant de créer un modèle de page unique avec défilement parallaxe j'ai trouvé et problème étrange. Je soupçonne que le problème est soit dans la partie jQuery de peut-être même le CSS lui-même, mais je ne suis pas sûr.taille de la fenêtre jquery bug

Mon bit de code jQuery actuel lit la taille de la fenêtre du navigateur des visiteurs et ajuste la hauteur des diapositives pour chaque page ancrée différente. De cette façon, j'ai atteint plein avec des arrière-plans, peu importe la taille de la fenêtre. Mais en même temps je me suis rendu compte que si j'ajoute des composants CSS différents, ils ne développeront pas la hauteur d'arrière-plan de l'ancre active, mais déborderont plutôt sur l'autre diapositive.

Voici la partie jQuery responsable de la glisse hauteur

$(function() { 
    $('.windows').css({ 
     'height': (($(window).height())) + 'px' 
    }); 

    $(window).resize(function() { 
     $('.windows').css({ 
      'height': (($(window).height())) + 'px' 
     }); 
    }); 

}); 

Et voici l'URL du site https://docstax.net/esgh/

Aller aux plans et redimensionner votre navigateur, vous verrez ce que je veux dire par ne pas ajuster le haut de la diapositive en fonction du contenu nécessaire élevé à l'intérieur. Edit: Comme suggéré par putvande là où beaucoup de $ (fenêtre) que je connaissais, faites à ce que j'ai mis à jour et minimisé le code.

+0

Pourquoi y a-t-il autant de '(' autour de $ (window) .height() '? Et vous savez que vous pouvez ajouter tous ces éléments en tant que chaîne séparée par des virgules dans le sélecteur jQuery right? – putvande

+0

@putvande noobish fault, j'aurais pu lier l'appel $ (window) à une seule classe laisse dire class = "window" et attaché cela à

Je vais corriger ça. – 0111010001110000

Répondre

0

Fondamentalement, vous ne voulez pas ajouter manuellement un composant height au div si le contenu est trop grand pour le conteneur. Voici ce que je pense travaillerait:

$(window).bind("load", function()                                               
    {                                                     
     var windowHeight = $(window).height();                                           
     $('.windows').each(function(index) {                                           
      if ($(this).height() < windowHeight) {                                          
      $(this).height(windowHeight);                                            
      }                                                   
     }); 
     $(window).resize(function() { 
      var windowHeight = $(window).height();                                           
      $('.windows').each(function(index) {                                           
       if ($(this).height() < windowHeight) {                                          
        $(this).height(windowHeight);                                            
       }                                                   
      }); 
      }); 
     }); 
+0

Je l'ai fait :) J'ai simplement ajouté la classe Windows donc son

maintenant :) – 0111010001110000

+1

ok donc je vais changer le sélecteur dans la réponse réel rapide pour refléter que –

+0

D'accord, je l'ai mis à jour avec votre code snipt, mais maintenant il n'est plus complet pour les autres sections. Reportez-vous au lien ci-joint dans la question originale – 0111010001110000

0

Vous pouvez essayer comme celui-ci:

<script type="text/javascript"> 
$(function(){ 
    var height = window.innerHeight; 
    $('.windows') .css({'height': height+'px'}); 
    $(window).resize(function() { 
     var reheight = window.innerHeight; 
     $('.windows') .css({'height': reheight+'px'}); 
    }); 
}); 
</script> 
+0

Le problème est toujours là, essayez d'aller sur le lien et l'échelle la fenêtre de votre navigateur, vous verrez que les tableaux de prix débordent dans le fond que la section Plans est redimensionnée pour tenir compte de la nouvelle hauteur de la fenêtre. – 0111010001110000

+0

Vous pouvez voir ici la sortie: http://jsfiddle.net/WgzkQ/ – imsyedahmed

+0

hauteur ou marge fixe peut-être que vous avez utilisé fixe élément interne de la section de plan pour quand la taille de la section redimensionnée ils ne sont pas redimensionnés. vous avez donc besoin de style plus souple pour l'élément intérieur du plan – imsyedahmed

0

J'ai essayé votre page, je ne pas voir un problème: Les sections sont redimensionnées comme ils le devraient . Le contenu est affiché comme il se doit compte tenu des styles appliqués. Lorsqu'une section est plus petite que son contenu, le contenu commence à saigner sur les autres pages. Parfaitement normal. Vous pouvez définir overflow: hidden; sur votre .windows pour empêcher cela et/ou utiliser des requêtes multimédias pour redimensionner le contenu.

Voici une fonction plus légère en passant, vient d'éditer votre code:

$(function() { 
    $(window).resize(function() { 
     $('.windows').css({ 'height': $(window).height() }); 
    }).resize(); 
}); 

Pas besoin d'écrire le code deux fois: la mise au gestionnaire de redimensionnement et le déclenchement, il doit manuellement faire. Écrivez-le une fois, donc quand vous avez besoin de le changer, vous le changerez une seule fois. Vous pouvez également réinitialiser de scrollTop dans votre gestionnaire de redimensionnement pour conserver le focus sur la même partie de la page.

+0

2 problèmes: La première est qu'il semble MemeCat a disparu et ne veut plus reconnaître cette question. La seconde est que votre réponse prétend qu'il n'y a pas de meilleure façon de résoudre ce problème. Le contenu ne doit pas saigner du conteneur si vous ne définissez pas la hauteur du conteneur trop petite. La vérification dans le code JS garantit que cela n'arrivera pas. –

+0

Pour moi, le problème ne semble pas être le code js, il semble que MemeCat essayait d'adapter le contenu qui prend plus d'espace que son conteneur. C'est ce que vous avez dit et je pense que c'est à peu près ce que j'ai dit: "Quand une section est plus petite que son contenu, le contenu commence à saigner". Tout le code a commenté js alors que j'étais ici: le code de MemeCat définit la même fonction deux fois, le mien n'a pas, je pense qu'il est assez d'amélioration pour poster une réponse. – adjogima

+0

Je n'ai pas dit ou laissé entendre qu'il n'y avait pas mieux pour faire face à ce problème que ce morceau de code js. Lire ma réponse, j'ai dit tout le contraire. Pas assez clairement évidemment. – adjogima