单纯判断滚动条方向
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判断滚动条滚动方向实例代码分析的详细内容。