您好,欢迎访问一九零五行业门户网

如何使用jquery判断滚动条滚动方向实例代码分析

单纯判断滚动条方向
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);
判断p是否滚动到底部
上面的方法是判断滚动轴是否滚动到底部,但是有时候,我们在做滚动加载的时候,有时候也要做某个p是否滚动到底部然后加载。那么如何判断p的滚动轴滚动到底部呢?
这个也需要了解几个高度:
1、p的高度 $("#某p").height();
2、滚动轴的高度 $(#某p)[0].scrollheight
3、滚动轴到p顶部的高度 $(某p)[0].scrolltop;
书写代码如下:
$(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:jquery滚动条位置控制:
将p的滚动条滚动到其子元素所在的位置,方便自动定位。
var container = $('p'), scrollto = $('#row_8'); 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() });?
以上就是如何使用jquery判断滚动条滚动方向实例代码分析的详细内容。
其它类似信息

推荐信息