一旦你通过 CSS 为背景图像设置了位置,jQuery Parallax 插件似乎会改变这些设置。然后解决方案是在 jQuery Parallax 处理完该视差层之后应用这些设置。
首先,从您的班级中删除margin-left
and 。left
.parallax-layer#background
.parallax-layer#background {
background-image: url('../images/bg.jpg');
background-repeat: no-repeat;
background-position: center bottom;
width: 1920px;
height: 620px;
}
理想情况下,使用相同的方法将蓝色框居中(除非您希望它部分离开屏幕)。我还根据您的 HTML 删除了非必要的 CSS。
.parallax-layer#tagline {
background-color: blue;
width: 400px;
height: 400px;
}
最后,添加从背景和标语选择器中删除的 CSS 规则,以便在 jQuery Parallax 操作这些项目后应用它们。
jQuery(document).ready(function(){
jQuery('#parallax .parallax-layer')
.parallax({
mouseport: jQuery('body')
});
jQuery('#background').css({marginLeft: "-960px", left: "50%", bottom: "0px"});
jQuery('#tagline').css({marginLeft: "-200px", left: "50%"});
});
当鼠标进入视口时,您将不再看到背景图像左侧的大白色部分(主体背景颜色)。
这个jQuery Parallax插件按设计将所有内容对齐顶部/左侧。如果鼠标从蓝色框的右侧进入视口,则该框将正确动画到该位置。
但是,如果鼠标从蓝色框的左侧进入,该框将“跳转”到光标位置。您可能会考虑删除上面的最后一个 jQuery 行,以便在浏览器加载时蓝色框位于顶部/左侧,或者使用较低的百分比值,例如25%
.
对于那些登陆这个问题/答案并希望使用一些真正的标记的人,我已经设置了两个 jsFiddles。一个 jsFiddle 重复了这个问题,另一个有如上所示的解决方案。
原始问题 - jsFiddle 已
修复应用 - jsFiddle
两个 jsFiddles 都处于全屏模式,因此可以看到视差效果。
查看原始问题的说明:
1.启动上面的原始问题 jsFiddle 链接。
2.按下jsFiddle播放按钮,注意不要进入视口。如果蓝色框以任何方式移动...您已进入视口,请再次按下播放按钮。
3.从视口的顶部/左侧进入,您将看到问题...... HTML Body(白色)被视为背景图像重新调整自身。
4.随时按播放按钮重置网页。
要查看已修复的应用程序,请启动上面的链接或在浏览器地址栏中修改 URL,以便您看到该 jsFiddle 的修订版 1。(即,http://jsfiddle.net/UG4Sq/1/embedded/result/
)
蓝色框通过文本指示您查看的 jsFiddle。干杯!