【发布时间】:2015-09-05 18:18:04
【问题描述】:
我正在尝试确定一个元素在视口中是部分还是完全。
我发现这将确定一个元素是否完全可见,但在尝试确定部分可见性时会一直感到困惑。我不想使用 jQuery。
基本上,这个想法是页面上会有一个元素可能不在视图中。一旦用户将该元素滚动到视图中,即使是部分滚动,它也应该触发一个事件。我将通过绑定一个 onscroll 事件来处理事件触发器。我只需要检测才能正常工作。
function isInViewport(element) {
var rect = element.getBoundingClientRect();
var html = document.documentElement;
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || html.clientHeight) &&
rect.right <= (window.innerWidth || html.clientWidth)
);
}
任何帮助将不胜感激!
【问题讨论】:
-
不检查
top >= 0和bottom <= html.clientHeight,您可以翻转它们以获得部分可见性,即bottom <= 0 && top >= html.clientHeight。 -
这是一个很棒的解决方案,可让您选择完全或部分可见性:github.com/libshin/inViewport/blob/master/index.js
标签: javascript