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