2009-08-30 11 views
0

Comment puis-je détecter si un utilisateur fait défiler vers le bas avec jQuery? Je veux un div fixe pour montrer seulement quand le navigateur est dans 300px du dessus. Lorsque l'utilisateur fait défiler la marque 300px, il devrait disparaître. Lorsque l'utilisateur revient en haut, il doit masquer. Comment puis-je faire cela?Afficher la balise uniquement lorsque la page défile en haut

+0

Ne le placez pas à plus de 300 pixels du haut de la page. Vous n'aurez même pas besoin de jQuery :-) – edeverett

+0

Je veux que ce soit corrigé dans le navigateur, donc quand vous faites défiler vers le bas, ça aura l'air cool: D –

Répondre

1

Joindre un écouteur de défilement à la fenêtre: http://docs.jquery.com/Events/scroll

Vérifiez ensuite les scrollTop de la fenêtre: http://docs.jquery.com/CSS

Lorsque scrollTop est inférieur à 300, show() le div, sinon hide() it.

+0

Notez que scrollTop ne fonctionne PAS sur les navigateurs. Vous voulez 'window.scrollY' pour ce test. –

2
var docElem = $(document.documentElement) 
docElem.scroll(function(e) { 
    if(docElem.scrollTop() < 300) { 
     whatever.show(); 
    } else { 
     whatever.hide(); 
    } 
}); 

Vous pourriez avoir à utiliser un autre élément (comme docElem) dans les différents navigateurs, mais cela devrait fonctionner dans Firefox. (Je ne l'ai pas testé)

EDIT: Plus jQuery

+0

J'ai utilisé une partie de votre code, merci! –

+0

Alors pourquoi ne l'avez-vous pas marqué comme accepté? – SLaks

1

scrollTop et scrollY on dirait qu'ils vous aideront à démarrer dans IE et Firefox. Je ne suis pas sûr des autres navigateurs.

0

juste vérifier la position de la fenêtre sur l'événement de défilement, et la comparer avec la position de l'élément:

$(window).scroll(function(e){ 
    $el = $('.myElement'); 
    if ($(this).scrollTop() > $el.offset().top){ 
    $el.hide(); 
    } else { 
    $el.show(); 
}); 

Exécuter cet exemple here.

Questions connexes