修复滚动时延迟的jquery淡入淡出
Fix delayed jquery fade on scroll
vol7ron向我展示了如何实现元素在向下滚动时淡入,在向上滚动时淡出的效果:为什么"($(this).css(';opacity';)==.3)";不工作?
jsfiddle:http://jsfiddle.net/b7qnrsrz/16/
$(window).on("load", function () {
function fade() {
$('.fade').each(function () {
/* Check the location of each desired element */
var objectBottom = $(this).offset().top + $(this).outerHeight();
var windowBottom = $(window).scrollTop() + $(window).innerHeight();
/* If the object is completely visible in the window, fade it in */
if (objectBottom < windowBottom) { //object comes into view (scrolling down)
if ($(this).css('opacity') != 1) {
$(this).stop(true,false).fadeTo(500, 1);
}
} else { //object goes out of view (scrolling up)
if ($(this).css('opacity') == 1) {
$(this).stop(true,false).fadeTo(500, .3);
}
}
});
}
fade(); //Fade in completely visible elements during page-load
$(window).scroll(function () {
fade();
}); //Fade in elements during scroll
});
这几乎完美。按原样,直到我停止滚动,这些框才会逐渐消失。因此,如果我顺利地滚动过其中三个,而不是在滚动过每一个时一个接一个地淡出,它们都会等待淡出,直到我停止滚动。我该如何补救,即使在滚动时也会触发淡入淡出,而不是等到停止后才触发?
这是因为脚本中存在错误。
每次滚动时,它都会执行淡入淡出功能。因为动画的前缀是stop()
,所以如果缓慢滚动,动画将永远不会真正有时间运行。
您可以删除.stop()
,也可以找到只将淡入应用于尚未淡入的元素的方法。
似乎还有另一个bug。有时项目没有被检测到在视口中,它们也不会淡入。我不知道为什么会发生这种情况。这可能与滚动速度过快有关。
相关文章:
- 页面加载跳转jquery淡入
- 使用jquery淡入淡出
- jQuery淡入淡出动画在两者之间显示白色
- jQuery淡入淡出/动画不透明度到不同的显示类型,然后阻止
- 用于append元素的jQuery淡入淡出
- Jquery淡入淡出问题
- 单击“再次”时,jQuery淡入淡出
- 将JQuery淡入淡出效果合并到删除和添加类中
- 正在添加JQuery淡入淡出代码
- 如何使用jQuery淡入淡出文本
- JQuery 淡入/淡出错误 - 淡入到正常工作
- Jquery淡入淡出切换如何在每个按钮中添加淡入淡出效果
- 一次两个对象的 JQuery 淡入淡出循环
- 代码中的 JQuery 淡入淡出具有错误提示循环
- Jquery淡入,一起淡出一些元素
- jQuery 淡入淡出图像上的悬停动画会断开链接
- 简单的jQuery淡入淡出动画 - 如何显示/隐藏DIVS
- Firefox setTimeout + jQuery 淡入淡出循环不一致,提前停止,不会循环
- jquery 淡入淡出更改内容并淡出不透明度
- jQuery 淡入淡出效果以转移到另一个页面