【发布时间】:2014-06-19 12:39:17
【问题描述】:
当容器滚动到视图中时,视差效果成功启动,当容器离开视图时停止。
问题
不幸的是,当我将视差容器放在页面下方时,效果会从背景位置在错误位置开始。
我明白为什么会出现这个问题,但不知道如何解决。
我需要的基本上是这样的:
- 视差容器滚动到视图中后开始效果:有效。
- 离开视图后停止效果:有效。
- 仅将背景位置移动自进入视图后滚动的距离。不是相对于页面顶部的滚动距离。
对于页面下方的视差容器:
您可以看到图像的边缘。我正在为此寻找解决方案。
想法
到目前为止,我的尝试都是基于这样的想法,即仅获得一次视差容器到页面顶部的距离(不要在每次滚动时更新它)并在计算中实现它。
但我似乎无法让它正常工作。我错过了什么吗?
进一步澄清:
任何页面上都可以有多个视差容器。
每个都可以有自己的背景图像集。 (在 CSS 中)
我不知道一个页面上会有多少个视差容器。
我不知道它们放在哪里。
只有那些可见的才能移动。
代码
只有相关部分:
$(window).scroll(function(){ // Bind window scroll event
$( ".parallax" ).each(function() {
if( $( this ).is_on_screen() ) { // Check if element is visible on screen after DOM loaded
// ANIMATE PARALLAX EFFECT
// If Parallax Element is scrolled into view do...
// Variables
var speed = 2.5;
var calc = (-window.pageXOffset / speed) + "px " + (-window.pageYOffset / speed) + "px";
var container = $( this );
// Function
container.css({backgroundPosition: calc});
} else {
// ...otherwise do nothing
}
});
});
标签: jquery scroll window parallax