Javascript如何获取当前窗口显示的标签?

现在有这样的一个实现需求,当页面上下滚动时,我需要时时获取滚动到当前可视区域的标签,有什么办法吗?

目前已知使用visible属性是不太好用的,页面经常会有锚点跳动,这个属性获取的不太准确

阅读 3.7k
3 个回答

如果需要判断某几个元素是否进入视窗话可以用下面的方法:

var isInViewport = function (elem) {
    var bounding = elem.getBoundingClientRect();
    return (
        bounding.top >= 0 &&
        bounding.left >= 0 &&
        bounding.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
        bounding.right <= (window.innerWidth || document.documentElement.clientWidth)
    );
};
window.addEventListener('scroll', function (event) {
    if (isInViewport(elem)) { //elem就是希望判断是否进入视窗的元素
        
    }
}, false);

没有特别好的办法,只能对每个元素取 .getBoundingClientRect(),然后配合 document.body.scrollTop 来判断了,性能不会太好。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题