2013-02-22 3 views
1
$(document).ready(function() { 

$(function() { 
    var offset = $(".control.Home .rightCol").offset(); 
    var topPadding = 15; 
    $(window).scroll(function() { 
     if ($(window).scrollTop() > offset.top) { 
      $(".control.Home .rightCol").stop().animate({ 
       marginTop: $(window).scrollTop() - offset.top + topPadding 
      }); 
     } else { 
      $(".control.Home .rightCol").stop().animate({ 
       marginTop: 0 
      }); 
     }; 
    }); 
}); 
}); 

Lorsque je fais défiler la page vers le bas, le div de droite continue de défiler vers le bas. C'est sur le localhost donc je ne peux pas vous montrer un lien pour le moment. Comment faire pour que le div s'arrête à un certain point, là où le div de gauche s'arrête?jQuery DIV défiler sur la page défiler

Site Web: http://goo.gl/OSiH5

lien a été ajouté à l'endroit où vous pouvez voir le défilement div. Je besoin d'arrêter avant le pied de page où vous avez les icônes de défilement

+0

Pouvez-vous créer un fichier jsfiddle: http://jsfiddle.net/ – iappwebdev

+0

Essayez-vous de créer un élément qui est toujours "à l'écran", c'est-à-dire qui arrête de défiler lorsque vous atteignez le haut de la page. Si oui, ce n'est pas le moyen de le faire? – adeneo

+0

Un violon, ou à tout le moins un balisage, aiderait beaucoup. – ajp15243

Répondre

2

Je l'ai utilisé ce code dans l'un de mes sites:

var scroll = 0; 
var marginTop = 10; 
$(document).ready(function(){ 
    $(window).scroll(function() { 
     marginTop = ($(document).scrollTop() - scroll) + marginTop; 
     scroll = $(document).scrollTop(); 

     $("#left").animate({"marginTop": marginTop+"px"}, {duration:500,queue:false}); 
    }); 
}); 

#left est le div que je monte/descend suivant le parchemin.

Vous pouvez le voir en direct: realtimecoding.net

Edit: Si vous en avez besoin pour arrêter le défilement à, disons, 660px, vous pouvez simplement ajouter une vérification. Cela devrait ressembler à:

var scroll = 0; 
var marginTop = 10; 
$(document).ready(function(){ 
    $(window).scroll(function() { 
     marginTop = ($(document).scrollTop() - scroll) + marginTop; 
     scroll = $(document).scrollTop(); 

     if (marginTop<660) { 
      $("#left").animate({"marginTop": marginTop+"px"}, {duration:500,queue:false}); 
     } 
    }); 
}); 

De sorte qu'il ne dépasse jamais 660px de marge supérieure.

+0

sympa - mais si vous continuez à défiler avec la roulette de la souris, elle saute et descend en le faisant défiler encore plus bas. Comment l'arrêtez-vous là où votre contenu se termine? – MJCoder

+1

fait. ce n'est pas pixel parfait, mais fonctionne – TheBronx

+0

ai-je ajouté l'instruction if dans mais ne semble pas fonctionner pour moi ici est le script $ (document) .ready (function() { /*} else { if (marginTop <660) { $ (". Control.Home .rightCol"). Animate ({"margeTop": margeTop + "px"}, {durée: 500, queue: false}); } */ – MJCoder

Questions connexes