jquery如何判斷頁面滾動條(scroll)是上滾還是下滾?

2017-06-14 1461 2 編輯:深圳網站建設 來源:互聯網

jquery判斷頁面滾動條(scroll)是上滾還是下滾,且是否滾動到頭部或者底部

webtouch(webapp)頁面,防蘋果手機safari瀏覽器,網上滑動,底部導航消失,滑動到底部又出現。向下滑動,底部導航出現。

遇到問題

1、我一開始用swipeup和swipedown來做,發現因為有滾動條,不會觸發。因此只能判斷滾動條是上滾下滾等。

2、通過上滾下滾來讓底部導航顯示或者因此,安卓上面的瀏覽器都可以,但是蘋果safari會一閃一閃,原因是蘋果safari自動有個彈跳效果,導致事件重復執行,解決辦法是給上滾下滾一個距離,滾動到一定距離后返回是上滾還是下滾。

單純判斷滾動條方向

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);

}

調用方法:

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

以上方法手機蘋果瀏覽器事件會跳動,解決方法及代碼改進

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('up');

} else {

    if (Math.abs(delta) < 10) {

        return false;

    }

    fn(delta > 0 ? "down" : "up");

}

}, false);

}


調用方法:

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;

    }

}

});

滾動條滾動到底部和頭部判斷

其實我上面的函數中已經有判斷,下面再列一下!看如下函數!

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("我到頭部了");


    }

}

調用方法:

$(window).scroll(BottomJumpPage);

判斷div是否滾動到底部

上面的方法是判斷滾動軸是否滾動到底部,但是有時候,我們在做滾動加載的時候,有時候也要做某個div是否滾動到底部然后加載。那么如何判斷DIV的滾動軸滾動到底部呢?

這個也需要了解幾個高度:

1、div的高度 $("#某div").height();

2、滾動軸的高度 $(#某div)[0].scrollHeight

3、滾動軸到div頂部的高度 $(某div)[0].scrollTop;a

書寫代碼如下:

$(document).ready(function (){

var nScrollHight = 0; //滾動距離總長(注意不是滾動條的長度)

var nScrollTop = 0;   //滾動到的當前位置

var nDivHight = $("#div1").height();

$("#div1").scroll(function(){

 nScrollHight = $(this)[0].scrollHeight;

 nScrollTop = $(this)[0].scrollTop;

 if(nScrollTop + nDivHight >= nScrollHight)

   alert("滾動條到底部了");

 });

});

專業的網站建設公司,深正互聯,如您有網站營銷需求,請您關注我們,或者致電13828884598


本站文章均為深正網站建設摘自權威資料,書籍,或網絡原創文章,如有版權糾紛或者違規問題,請即刻聯系我們刪除,我們歡迎您分享,引用和轉載,但謝絕直接搬磚和抄襲!感謝...
關注深正互聯
七星彩头尾