2017-07-18 9 views
0

Bonjour Je voudrais savoir comment faire défiler ma page en appuyant sur les touches fléchées. Comme cette page: http://spacexstats.xyz. Le script Java et jQuery sont acceptés.Faire défiler le contenu de la page en appuyant sur les touches fléchées

Merci, Ivan.

+1

Par défaut touches haut et bas sont binded pour faire défiler de la page. Vous n'avez pas besoin de configurer quoi que ce soit. –

+1

Copie possible de [Lisser le défilement en cliquant sur un lien d'ancrage] (https://stackoverflow.com/questions/7717527/smooth-scrolling-when-clicking-an-anchor-link) –

+0

(C'est un doublon "assez proche") - vous le déclenchez en attrapant des codes clés au lieu d'un clic, mais c'est assez simple) –

Répondre

0

Chaque page peut être défilée avec les flèches haut/bas par défaut.

Si vous parlez de défilement personnalisé lisse - la page que vous demander utilise Angular scroll plugin

Il y a beaucoup libs et plugins qui peuvent aider à atteindre une expérience utilisateur similaire, envisagez d'utiliser Google pour défilement lisse [sur les touches fléchées]

bibliothèques Exemple:

+0

La question n'est pas étiquetée avec Angular, donc je ne suis pas sûr que ce soit la meilleure recommandation. –

+0

Je ne suggère pas de l'utiliser, je dis juste comment cela est fait sur un exemple fourni –

+0

Juste, mais je pense que cela déplace dans le territoire "devrait être un commentaire au lieu d'une réponse" .... –

0

Ceci est une AngularJS demande. Ils utilisent bibliothèque à défilement angulaire (https://github.com/oblador/angular-scroll) pour faire défiler en douceur les éléments de la page. Voici une petite application angulaire qui montre un défilement en douceur vers plusieurs éléments de la page.

(function() { 
 
    var app = angular.module("soDemo", ['duScroll']); 
 
    app.controller("soDemoController", SoDemoController); 
 

 
    SoDemoController.$inject = ['$scope', '$document']; 
 

 
    function SoDemoController($scope, $document) { 
 
    var vm = { 
 
     getContent: getContent, 
 
     scrollTo: scrollTo 
 
    }; 
 

 
    $scope.vm = vm; 
 
    return; 
 

 
    ////////// IMPLEMENATION //////// 
 
    function getContent(size) { 
 
     return 'blah '.repeat(size); 
 
    } 
 

 
    function scrollTo(selector) { 
 
     // Note: normally we don't want to interact with the DOM in a controller. A directive is the proper way to do this but for this example we'll let it slide. 
 
     var target = $(selector)[0]; 
 
     $document.scrollToElementAnimated(target, 0, 1000); 
 
    } 
 
    } 
 
})();
a { 
 
    color: blue; 
 
    text-decoration: underline; 
 
    cursor: pointer; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-scroll/1.0.2/angular-scroll.js"></script> 
 

 
<div class="sample" ng-app="soDemo" ng-controller="soDemoController"> 
 
    <h1 id="title1">Title 1</h1> 
 
    <a ng-click="vm.scrollTo('#title2')">Go to Title 2</a> 
 
    <p>{{vm.getContent(1000)}}</p> 
 

 
    <h1 id="title2">Title 2</h1> 
 
    <a ng-click="vm.scrollTo('#title3')">Go to Title 3</a> 
 
    <p>{{vm.getContent(1000)}}</p> 
 

 
    <h1 id="title3">Title 3</h1> 
 
    <p>{{vm.getContent(100)}}</p> 
 
    <a ng-click="vm.scrollTo('.sample')">Go to Top</a> 
 
</div>

+0

Pourquoi la downvote? C'est, à partir d'un niveau élevé, comment ils ont accompli le défilement sur ce site. Je n'ai pas dit qu'apprendre à faire ceci à partir de zéro serait facile. – flyer

+1

Voir les commentaires sur la réponse de Mihey Egoroff (de plus, cette réponse était redondante à la sienne). Aussi: https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers –

+0

oh! Je n'ai pas compris cela. J'ai mis à jour ma réponse avec une démonstration de l'utilisation de leur bibliothèque. Merci d'avoir pris le temps de me remplir !! – flyer