Javascript 有没有办法知道一个元素何时经过另一个元素?
我有一个粘滞的元素,当它经过另一个元素时需要识别,以便从屏幕上消失 这是应该消失的元素:Javascript 有没有办法知道一个元素何时经过另一个元素?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个粘滞的元素,当它经过另一个元素时需要识别,以便从屏幕上消失 这是应该消失的元素: .sticky-footer .container .row.sticky-row .col-xs-6 // text .col-xs-6 // text 当用户向下滚动并通过此元素时: hr#line-before-related-article css或jQuery
.sticky-footer
.container
.row.sticky-row
.col-xs-6
// text
.col-xs-6
// text
当用户向下滚动并通过此元素时:
hr#line-before-related-article
css或jQuery有什么方法可以做到这一点吗?您可以监听每次滚动页面时触发的事件,然后检查其位置是否超过相关文章之前的hr行 下面是一个例子:
$(window).on('scroll', function() {
if ($(this).scrollTop() + $(this).height() >= $('#line-before-related-article').position().top) {
$('.sticky-footer').hide();
} else if ($('#line-before-related-article').position().top >= $(this).scrollTop()) {
$('.sticky-footer').show();
}
})
如果你想要更高性能的东西,你可以使用一个叫做去盎司函数的东西
对于那些不知道去盎司函数做什么的人来说,它限制了函数启动的速率。一个简单的例子:窗口上有一个调整大小的侦听器,它执行一些图元尺寸计算,并(可能)重新定位一些图元。这本身并不是一项繁重的任务,但在多次调整大小后被反复解雇确实会减慢你的网站速度。为什么不限制函数的启动速率
更多信息请参见:这是根DOM元素:
$(this)=$(document)代码>超级怪异。当我开始向下滚动时,粘性元素消失了。我已经这样做了。事实上,我不得不更改$(文档)
,并将$(窗口)
放进去。我现在要做的是重新启动操作,这样当用户滚动到顶部时,粘性元素会再次出现。我会将其添加到答案中。您可以这样做:($(“#相关文章前的行”).position().top>=$(this.scrollTop())