Maison  >  Article  >  interface Web  >  Comment utiliser jquery pour déterminer l'analyse de code d'exemple de direction de défilement de la barre de défilement

Comment utiliser jquery pour déterminer l'analyse de code d'exemple de direction de défilement de la barre de défilement

伊谢尔伦
伊谢尔伦original
2017-07-19 15:46:122036parcourir

Déterminez simplement la direction de la barre de défilement


function scroll( fn ) {
  var beforeScrollTop = document.body.scrollTop,
    fn = fn || function() {};
  window.addEventListener("scroll", function() {
    var afterScrollTop = document.body.scrollTop,
      delta = afterScrollTop - beforeScrollTop;
    if( delta === 0 ) return false;
    fn( delta > 0 ? "down" : "up" );
    beforeScrollTop = afterScrollTop;
  }, false);
}

Méthode d'appel :


scroll(function(direction) { console.log(direction) });

La méthode ci-dessus entraînera le saut de l'événement du navigateur Apple du téléphone mobile, l'amélioration de la solution et du code


scrollDirect: function (fn) {
  var beforeScrollTop = document.body.scrollTop;
  fn = fn || function () {
  };
  window.addEventListener("scroll", function (event) {
    event = event || window.event;

    var afterScrollTop = document.body.scrollTop;
    delta = afterScrollTop - beforeScrollTop;
    beforeScrollTop = afterScrollTop;

    var scrollTop = $(this).scrollTop();
    var scrollHeight = $(document).height();
    var windowHeight = $(this).height();
    if (scrollTop + windowHeight > scrollHeight - 10) { //滚动到底部执行事件
      fn('up');
      return;
    }
    if (afterScrollTop < 10 || afterScrollTop > $(document.body).height - 10) {
      fn(&#39;up&#39;);
    } else {
      if (Math.abs(delta) < 10) {
        return false;
      }
      fn(delta > 0 ? "down" : "up");
    }
  }, false);
}

Méthode d'appel :


  var upflag=1;
  var downflag= 1;
  //scroll滑动,上滑和下滑只执行一次!
scrollDirect(function (direction) {
    if (direction == "down") {
      if (downflag) {
        $(".footer_wrap").slideUp(200);
        downflag = 0;
        upflag = 1;
      }
    }
    if (direction == "up") {
      if (upflag) {
        $(".footer_wrap").slideDown(200);
        downflag = 1;
        upflag = 0;
      }
    }
 });

La barre de défilement défile vers le bas et la tête est jugée

En fait, il y a déjà des jugements dans la fonction ci-dessus, listons-les à nouveau ci-dessous ! Regardez la fonction suivante !


BottomJumpPage: function () {
      var scrollTop = $(this).scrollTop();
      var scrollHeight = $(document).height();
      var windowHeight = $(this).height();
      if (scrollTop + windowHeight == scrollHeight) { //滚动到底部执行事件
          console.dir("我到底部了");

      }
      if (scrollTop == 0) { //滚动到头部部执行事件
      console.dir("我到头部了");

      }
 }

Méthode d'appel :


$(window).scroll(BottomJumpPage);

Déterminer si p a défilé jusqu'à la fin de la partie

La méthode ci-dessus consiste à déterminer si l'axe de défilement a défilé vers le bas, mais parfois, lorsque nous effectuons un chargement de défilement, nous devons parfois également déterminer si un certain p a défilé vers le bas, puis chargé. Alors comment juger que l’axe de défilement de p a défilé vers le bas ?

Vous devez également connaître quelques hauteurs pour cela :

1 La hauteur de p$("#a certain p").height();
2. de l'axe de défilement$(# Un certain p)[0].scrollHeight
3. La hauteur de l'axe de défilement jusqu'au sommet de p $(un certain p)[0].scrollTop;
Écrivez le code comme suit :


 $(document).ready(function (){
    var nScrollHight = 0; //滚动距离总长(注意不是滚动条的长度)
    var nScrollTop = 0;  //滚动到的当前位置
    var npHight = $("#p1").height();
    $("#p1").scroll(function(){
     nScrollHight = $(this)[0].scrollHeight;
     nScrollTop = $(this)[0].scrollTop;
     if(nScrollTop + npHight >= nScrollHight)
      alert("滚动条到底部了");
     });
});

PS : contrôle de position de la barre de défilement jQuery :

Faites défiler la barre de défilement de p jusqu'à la position de ses éléments enfants pour faciliter le positionnement automatique.


  var container = $(&#39;p&#39;), 
  scrollTo = $(&#39;#row_8&#39;);

  container.scrollTop( 
  scrollTo.offset().top - container.offset().top + container.scrollTop() 
  );

  // Or you can animate the scrolling: 
  container.animate({ 
  scrollTop: scrollTo.offset().top - container.offset().top + container.scrollTop() 
  });?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn