jQuery – 检查元素是否进入视图,淡化那些元素

当我知道要指定哪个元素时,我找到了这个问题的答案,但我正在寻找的方法是检查’滚动’是否有任何具有特定类的元素进入视图,并修改它们(例如,改变不透明度 – 只有那些进入视野的人)。 我知道代码可能看起来与此类似,但我无法使其工作:

jQuery(window).on("scroll", function() { var difference = jQuery(window).offset().top + jQuery(window).height()/2; if (difference > jQuery(".makeVisible").offset().top) { jQuery(this).animate({opacity: 1.0}, 500); } }); 

非常感谢你。 注意:存在变量差异,因为我希望元素在到达屏幕中间时变得可见。

借用检查元素在滚动后是否可见并使用jQuery将DIV置于屏幕中心以检查元素是否在屏幕的可视中心:

 function isScrolledIntoView(elem) { var centerY = Math.max(0,((jQuery(window).height()-jQuery(elem).outerHeight()) / 2) + jQuery(window).scrollTop()); var elementTop = jQuery(elem).offset().top; var elementBottom = elementTop + jQuery(elem).height(); return elementTop <= centerY && elementBottom >= centerY; } 

然后,我们可以修改您的方法:

 jQuery(window).on("scroll resize", function() { jQuery(".makeVisible").each(function(index, element) { if (isScrolledIntoView(element)) { jQuery(element).animate({opacity: 1.0}, 500); } }); }); 

我使用skrollr.js插件来实现这一点,这是在github https://github.com/Prinzhorn/skrollr

然后你可以将参数附加到任何标签,例如,假设你淡出了一个你可以有img标签的图像

  

格式化

 data-[offset]-(viewport-anchor)-[element-anchor] 

所以它正在使用 – 绕过偏移参数。

我认为这是实现你所寻找的最简单的方法,如果你然后使用jquery附加类似的东西

 $('*').attr("data--bottom-bottom="opacity:0;" data--top-top="opacity:0" data--top-center="opacity=1""); 

我在手机上,所以我现在无法测试,但我相信它应该有所帮助,如果不是,至少可以给你一个新的尝试途径!

这些来源也可能对你有所帮助: 如何在jquery中更新(追加)一个href?

当用户到达屏幕底部时淡出元素