js获得滚动条位置 是否存在 距离某一侧像素值(转)
javascript中如何判断dom对象是否出现了滚动条
某些场景下需要用javascript去获取页面中的某个dom对象是否出现了滚动条,
那么javascript的dom操作为我们提供了哪些方法可以得到呢?
参考DHTML手册会发现:
dom对象有offsetTop和 offsetLeft属性,
它们所获得的值是当前滚动条所滚动的数值;
当滚动条没有滚动或者没有出现的时候,
这两个值都是0。
dom对象还有属性:offsetHeight和 scrollHeight,
offsetHeight是dom对象相对父级元素的可见高度,
scrollHeight 是dom对象包含了滚动部分的高度。
有了上述的四个基本属性,
那么我们可以尝试进行判断(当然以下的判断是在没有设置css样式:overflow:hidden的情况下的):
当dom对象offsetTop > 0的时候,说明滚动条已经存在了;
另外,如果scrollHeight > offsetHeight即包含滚动部分的高度超出可视高度的时候,
滚动条即已出现。
综合上述两条可以得出以下结论:
if (dom.offsetTop > 0 || dom.scrollHeight > dom.offsetHeight) {
//滚动条已出现
}
当然,
是不是只有这两个条件可以判断滚动条是否存在呢?
如有朋友有更好的方法,可点击本文后面的“我要留言”给我留言,
感谢赐教~
js获得滚动条位置
注意body的使用
function getScroll()
{
var t, l, w, h;
if (document.documentElement && document.documentElement.scrollTop) {
t = document.documentElement.scrollTop;
l = document.documentElement.scrollLeft;
w = document.documentElement.scrollWidth;
h = document.documentElement.scrollHeight;
} else if (document.body) {
t = document.body.scrollTop;
l = document.body.scrollLeft;
w = document.body.scrollWidth;
h = document.body.scrollHeight;
}
return { t: t, l: l, w: w, h: h };
}
获取浏览器垂直滚动条向下滚动的像素
关于js中 document.body.scrollTop 不能返回正确值的原因 收藏
本来是为了通过 document.body.scrollTop来获取浏览器垂直滚动条向下滚动的像素,但是不管滚动条在什么位置总是返回是0,造成这样的原因和html的头部声明有关,如果头部声明 为:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">,这样肯定得到的结果是 0,如果该为<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">就能得到正确的结果,对于第一种头部声明想要得滚动条的滚动的高度怎么办,解决方法有两种
1、var scrollPos; if (typeof window.pageYOffset != 'undefined') { scrollPos = window.pageYOffset; } else if (typeof document.compatMode != 'undefined' && document.compatMode != 'BackCompat') { scrollPos = document.documentElement.scrollTop; } else if (typeof document.body != 'undefined') { scrollPos = document.body.scrollTop; }
2、用document.documentElement.scrollTop 替代 document.body.scrollTop