【发布时间】:2015-04-04 17:05:24
【问题描述】:
我想堆叠元素,当它们出现时,它会添加类 .active。我不希望类被删除,所以一旦添加它就会保留在那里。
总体思路:
如果 .default 在滚动视图中添加类 .active
因此,当您向下滚动时,它会在出现时添加类。
在查看了类似的问题后,我想出了这个: http://jsfiddle.net/x05vwb28/
$(window).scroll(function() {
if (checkVisible($('.default'))) {
$('.default').addClass('active');
}
});
function checkVisible( elm, eval ) {
eval = eval || "visible";
var vpH = $(window).height(), // Viewport Height
st = $(window).scrollTop(), // Scroll Top
y = $(elm).offset().top,
elementHeight = $(elm).height();
if (eval == "visible") return ((y < (vpH + st)) && (y > (st - elementHeight)));
if (eval == "above") return ((y < (vpH + st)));
}
它工作了一半...当滚动时,它会将活动类添加到所有元素,而不是只添加到视图中的一个。
我希望第一个 div 自动添加 active 类(因为它已经在视图中)
老实说,尽管它很有效……但我不明白这个功能。
有更简单的方法吗?
【问题讨论】:
-
googlestackoverflow.com/questions/8774089/…中“jquery isvisible”搜索的第二个链接
-
不想粗鲁,但你还没有阅读我的问题。
-
伙计们,这与元素是否可见或隐藏无关,而与元素是否在窗口的视图区域中有关。
-
我有点困惑的是,如果函数中没有任何类型的 return 语句,你的编码到底是如何工作的。
-
那里实际上有 2 个返回,一个永远不会被调用。 @Jhecht。
标签: jquery