javascript - 滚动时捕获第一个可见的 div id(视口(viewport))

标签 javascript jquery scroll

我有这个页面:

enter image description here

我想在滚动时捕获我所在的 div。

我知道如果我使用:

if( $(document).scrollTop() > $('#div1').position().top) {  
console.log('Div1')
  }

...它将捕获 div1 但不是为每个 div 使用此代码我想为所有 div 设置 1 个代码段

类似于:

var a =   // The div i am at
if( $(document).scrollTop() > $(a).position().top) {    
    console.log($(a).attr('id'))
}

我正在寻找类似于视口(viewport)的东西:http://www.appelsiini.net/projects/viewport/3x2.html

我可以在没有插件的情况下实现吗,只需 2-3 行?

最佳答案

这是一个很好的方法。您可能希望使用像素偏移优化“<=”以改善用户体验,并将 div 选择器 ($divs) 移到回调之外以提高性能。看看我的 fiddle :http://jsfiddle.net/brentmn/CmpEt/

$(window).scroll(function() {

    var winTop = $(this).scrollTop();
    var $divs = $('div');

    var top = $.grep($divs, function(item) {
        return $(item).position().top <= winTop;
    });
});

关于javascript - 滚动时捕获第一个可见的 div id(视口(viewport)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9026751/

相关文章:

html - 如何使子 div 与滚动父级的高度相匹配?

javascript - JQuery 下拉行为

jQuery 如何禁用页面除一个之外的所有链接

javascript - 在 Bootstrap 日期选择器中启用特定日期

javascript - 数据和时间中缺少前导 0

javascript - 如何减少带有缩放内容的 div 的可滚动高度?

ios - 可滚动 TextView : shows bottom of text as first

javascript - 如何在选项标签中触发事件?

javascript - 如何检查 ajax 响应的错误列表

javascript - 当我单击图像 slider 上的导航点时,为什么我的 jQuery slider 会发疯?