我创建了一个具有滚动的父div。它有包含文本内容的子div,我想检查scroll是否在子div的前面。
我尝试通过比较顶部滚动条位置和
div.offset直()上
,但当我向下滚动div将只计算可见的高度从父母与偏移顶部位置和滚动将计算它的顶部从父母的开始。我正在检查滚动的位置,如下所示:
if(scrollPosition>div.offset().top && scrollPostion (div.offset.top+div.height) ) {//scroll present }
什么是正确的方法得到div的顶部位置?
引用
需要添加父元素的offsetTop
var t = div.offsetTop;
var p = div;
while (p=p.offsetParent)
t += p.offsetTop;
假设有两个盒子,其中一个盒子的滚动条名为container
,另一个盒子的子滚动条名为target
:
<div id="container">
<div id="target"></div>
</div>
<script type="text/javascript">
var container = document.getElementById('container'),
target = document.getElementById('target');
if((container.scrollTop - target.offsetTop) > 0 && (container.scrollTop - target.offsetTop) < target.offsetHeight) {
console.log('in range');
}
</script>
target.offsetHeight
不含边距