我一直在研究我的网页上垂直滚动的视差效果,经过一些研究,我不确定我想要做的是技术上的视差效果。
据我所见,大多数视差效果都假设您希望能够在许多背景图像滚动或重复的巨大图像时无限滚动。
我想要做的是在滚动条到达页面底部时用背景图像填充两个 DIV 的背景。请注意,我不希望背景图像拉伸。我假设要获得我想要的效果,这些图像的垂直高度大于大多数人的视口,然后它们的垂直位置会改变。当用户的滚动条位于顶部时,一定量的背景是可见的,然后随着用户向下滚动垂直移动以填充背景空间。
请参阅下图以直观地解释我希望达到的效果:
视口的高度将根据内部 DIV 内的内容长度而有所不同。
我的麻烦是,如果我想要做的不完全是视差效果,那么我不知道还能怎么称呼它,并且我通过描述它进行搜索的尝试不断让我回到提供视差效果教程的页面。所以我一直被缺乏术语所困扰。
如果有人可以指导我如何根据滚动条位置控制背景的垂直位置,那将不胜感激。如果这可以用 CSS 来完成,那就太好了,但我假设需要一些 Javascript。一个 jQuery 解决方案也适用于我。
更新:
使用评论中提供的术语进行搜索后,我在外部 DIV 中获得了背景图像,几乎可以使用以下代码执行我想要的操作:
$(window).scroll(function () {
var yPos = $("#outerDiv").height() - ($("#outerDIV").height() * ($(window).scrollTop() / $(window).height()));
document.getElementById('outerDIV').style.backgroundPosition="0px " + yPos + "px";
});
它相对于滚动在正确的方向上移动背景图像,但它缺少的是将该运动限制在视口内。事实证明,根据视口和 DIV 大小获得正确的比例超出了我的数学能力。