如何解决在javascript / jQuery中检测滚动元素的偏移量
|| 我正在寻找计算元素和文档窗口顶部之间的距离。滚动时,我可以获取初始值,但它不会改变。如何找到该值以及数字在滚动显示时变为什么? JS:$(function() {
$(window).scroll(function() {
var h1 = $(\"h1\");
console.log(h1.offset().top)
});
});
HTML:
<div id=\"cover\">
<h1>hello sir</h1>
</div>
解决方法
将
<h1>
元素的偏移量与用户向下滚动页面的距离进行比较。 $(window).scrollTop()
函数将为您提供用户向下滚动的数量,因此:
$(window).scroll(function() {
var $h1 = $(\"h1\");
var window_offset = $h1.offset().top - $(window).scrollTop();
});
, 如果您讨厌算术(以及额外的函数调用),则可以做到这一点:
$(function() {
var h1 = document.getElementsByTagName(\"h1\")[0];
$(window).scroll(function() {
console.log(h1.getBoundingClientRect().top);
});
});
这正是getBoundingClientRect()所做的。
, 您可以使用此函数来获取窗口的滚动偏移量:
function getScrollXY() {
var scrOfX = 0,scrOfY = 0;
if( typeof( window.pageYOffset ) == \'number\' ) {
//Netscape compliant
scrOfY = window.pageYOffset;
scrOfX = window.pageXOffset;
} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
//DOM compliant
scrOfY = document.body.scrollTop;
scrOfX = document.body.scrollLeft;
} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
//IE6 standards compliant mode
scrOfY = document.documentElement.scrollTop;
scrOfX = document.documentElement.scrollLeft;
}
return [ scrOfX,scrOfY ];
}
然后,您可以在函数中使用偏移量来确定元素的实际位置:
$(function() {
$(window).scroll(function() {
var h1 = $(\"h1\");
var offs = getScrollXY();
console.log(h1.offset().top - offs[1]);
});
});
从理论上讲,这应该适用于所有浏览器,但是坦率地说,我并没有做太多的测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。