jquery判斷頁面滾動條(scroll)是上滾還是下滾,且是否滾動到頭部或者底部
阿新 • • 發佈:2017-09-05
js代碼 文章 重復執行 關於 收藏 mage src start http
webtouch(webapp)頁面,防蘋果手機safari瀏覽器,網上滑動,底部導航消失,滑動到底部又出現。向下滑動,底部導航出現。
遇到問題
1、我一開始用swipeup和swipedown來做,發現因為有滾動條,不會觸發。因此只能判斷滾動條是上滾下滾等。關於手機手勢,後面的文章會介紹,歡迎關註!
2、通過上滾下滾來讓底部導航顯示或者因此,安卓上面的瀏覽器都可以,但是蘋果safari會一閃一閃,原因是蘋果safari自動有個彈跳效果,導致事件重復執行,解決辦法是給上滾下滾一個距離,滾動到一定距離後返回是上滾還是下滾。
單純判斷滾動條方向
Js代碼
- 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);
- }
調用方法:
Js代碼- scroll(function(direction) { console.log(direction) });
以上方法手機蘋果瀏覽器事件會跳動,解決方法及代碼改進
Js代碼- 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);
- }
調用方法:
Js代碼- var upflag=1;
- var downflag= 1;
- //scroll滑動,上滑和下滑只執行一次!
- crollDirect(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;
- }
- }
- });
滾動條滾動到底部和頭部判斷
其實我上面的函數中已經有判斷,下面再列一下!看如下函數!
Js代碼- 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("我到頭部了");
- }
- }
調用方法:
Js代碼- $(window).scroll(BottomJumpPage);
jquery判斷頁面滾動條(scroll)是上滾還是下滾,且是否滾動到頭部或者底部