【发布时间】:2015-08-18 11:24:05
【问题描述】:
我创建了这个jsFiddle,它应该记录数字(这些数字不代表任何东西——它们只是一个代表:“元素已进入视口”的标志)。当特定元素进入视野时进入跨度(即使它是部分可见的)
所以我有一个带有许多灰色立方体的relative div。其中一个立方体是orange。
当我滚动 div - 橙色立方体开始显示,然后我增加数字。
但问题是,在橙色变得可见之前,数字会增加:
如您所见:
问题
我可能遗漏了一些东西,但为什么数字在实际可见之前就开始了?
$.fn.isOnScreen = function()
{
var win = $(".d");
var viewport = {
top: win.scrollTop(),
left: win.scrollLeft()
};
viewport.right = viewport.left + win.width();
viewport.bottom = viewport.top + win.height();
var bounds = this.offset();
bounds.right = bounds.left + this.outerWidth();
bounds.bottom = bounds.top + this.outerHeight();
return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
};
var i = 0;
$(".d").on('scroll', function()
{
if ($(".orange").isOnScreen())
{
$("#counter").text(i++);
}
});
【问题讨论】:
-
这些数字应该代表什么?
-
@RokoC.Buljan 什么都没有。它只是显示一个标志,显然橙色变得可见。 (不是)。
-
哦,好吧,我以为你要问一个 XY 问题 :) 明白了
-
您使用的算法依赖于
viewport是窗口,而不是容器元素 (.d)。 -
@Juhana?
var win = $(".d");
标签: jquery