- some content here
- some content here
- some content here
- some content here
- some content here
- some content here
En utilisant le balisage ci-dessous, comment puis-je faire en sorte que le div “#content” défile vers le haut ou vers le bas lorsque je clique ou survole la balise d’ancrage “#scrollUp” ou “#scrollDown”. Le défilement doit être lisse de préférence. Si vous cliquez dessus, vous devrez faire défiler une quantité spécifique (pour les appareils tactiles) si vous passez la souris dessus, vous pourrez faire défiler jusqu’à mouseout.
#content { overflow:auto; height: 50px; /*could be whatever*/ } up down - some content here
- some content here
- some content here
- some content here
- some content here
- some content here
Vous pouvez utiliser la fonction animate
de jQuery pour obtenir un effet de défilement régulier sur un click
ou un mouseover
:
var step = 25; var scrolling = false; // Wire up events for the 'scrollUp' link: $("#scrollUp").bind("click", function(event) { event.preventDefault(); // Animates the scrollTop property by the specified // step. $("#content").animate({ scrollTop: "-=" + step + "px" }); }).bind("mouseover", function(event) { scrolling = true; scrollContent("up"); }).bind("mouseout", function(event) { // Cancel scrolling continuously: scrolling = false; }); $("#scrollDown").bind("click", function(event) { event.preventDefault(); $("#content").animate({ scrollTop: "+=" + step + "px" }); }).bind("mouseover", function(event) { scrolling = true; scrollContent("down"); }).bind("mouseout", function(event) { scrolling = false; }); function scrollContent(direction) { var amount = (direction === "up" ? "-=1px" : "+=1px"); $("#content").animate({ scrollTop: amount }, 1, function() { if (scrolling) { // If we want to keep scrolling, call the scrollContent function again: scrollContent(direction); } }); }
Exemple de travail: http://jsfiddle.net/andrewwhitaker/s5mgX/
(Vous devrez désactiver les événements mouseover
et mouseout
pour voir correctement les effets du gestionnaire d’événements click
)
Comment ça marche:
animate
mentionnée ci-dessus pour faire défiler en douceur d’un montant spécifié au clic. mouseover
du lien est appelé et désactiver le défilement lorsque le gestionnaire d’événements mouseout
du lien. scrollContent
est appelé, si l’indicateur de scrolling
est toujours true
fois l’animation terminée, animez à nouveau dans la même direction. Le paramètre de fonction de rappel de animate
nous permet d’effectuer une action une fois l’animation terminée. Essayez d’utiliser JavaScript au lieu de jQuery pour cette tâche. Google la fonction scrollBy()
comme dans window.scrollBy()