【问题标题】:Parallax Effect on single div单个 div 上的视差效果
【发布时间】:2014-07-11 20:14:28
【问题描述】:

我真的不认为视差是描述我想要实现的目标的最佳词,但我不知道如何措辞。

基本上,我有一个固定的页眉部分,它允许页面的其余部分滑过它并按预期工作。

但是,我想在中间有另一个类似的部分。

我想要实现的事件顺序:

  1. -用户在页面顶部,标题完全可见的全高
  2. -用户向下滚动,页面内容滑到标题上方
  3. -一旦用户在页面顶部附近有 LAYER A,使该层保持在固定位置
  4. -用户继续向下滚动页面,B层(页面的其余部分)继续滑过A层(可能只剩下75px左右的div 可见)

我还创建了一个图像来配合 this

我尝试过使用 transform 使用固定的相对定位,但这并不完全有效。理想情况下,我想使用纯 CSS 来实现这一点,但我并不反对使用 jQuery。

提前感谢您的帮助!

编辑 2:我已经达到了我的效果……可能是想多了。这有点 hacky,我确信有更好的方法来处理它,但我已经这样做了:

$(window).scroll(function() {

if ($(".nav_bar").offset().top > 1057) {
    $(".fixedsection_wrapper").addClass("fixedposition"); }
else {
    $(".fixedsection_wrapper").removeClass("fixedposition");
}
});

所做的只是放置位置:当它与导航栏接触时固定在“A层”上。然后它的行为如图所示。

【问题讨论】:

  • 你可以为标题部分发布 HTML/CSS 吗?
  • @abmitchell,下面的代码仅用于标题部分,如果您还需要其余部分,请告诉我。
  • 其实已经加到顶帖了

标签: javascript jquery html css parallax


【解决方案1】:

我在各种项目中使用了许多视差脚本。我需要很长时间才能让它们按照我想要的方式工作,因此最好尝试使用您的脚本或其他人的脚本。

通常,他们查看父级,然后代码使其父级和 2 个子 div 层之间的空间改变距离。

例如:

父母 A 拥有孩子 B、C、D。 您希望视差发生在“C”上。 B 和 D 之间的距离需要改变来模拟这种效果,通常通过在滚动时向上平移 C 的背景图像,然后在滚动时改变 B 和 D 之间的距离。 D 改变距离的速度比 B 改变距离的速度快,当你向上滚动时,C 将以接近 1:2 的比例平移。

总而言之,使用视差脚本,大多数人倾向于遵循这种格式。我对您的问题的解决方案是将您的视差嵌套在一个包装器中,然后用其他 2 个带有内容的 div 将其包围。我可能过度简化了您的问题,但这就是我解决问题的方式。

【讨论】:

  • 我觉得我应该添加一些东西,这更会导致我的问题。如果我只是更改背景图像,我相信我可以在纯 CSS 中制作这种效果。在您的示例中,孩子“C”将是我图片顶部的橙色。在这个 DIV 中是一个滑动轮播,它在里面使用 position:relative 等。
  • 也许我想多了。想知道我是否可以将每张幻灯片的背景设置为固定并以这种方式实现。
  • 有这么多做事的方法,最简单的方法是在其中处理代码,然后等到您开始看到工作正常。在您的情况下,我可以整日整夜向您展示代码示例以使其为您工作,但在您的情况下,您认为这是完成工作的最佳和最可实现的方法。
  • 所以如果你碰巧看到这个: 仍然没有达到我想要的效果,但我开始认为最好根据滚动位置调整高度。就像检测我在顶部的固定导航是否是说,在应该发生这种效果的页面下方 500 像素,然后随着用户继续滚动而开始降低高度。这是个坏主意吗?
  • 不,如果可行,那就太好了!据我所知,基于 CSS 的固定导航栏始终位于距顶部 0px 的位置,因此没有可以提取的位置数据。我建议使用 jquery 粘性脚本,然后使用在该页面上您想要的任何位置制作锚点的脚本。我建议使用这两个脚本来实现你的结果:stickyjs.comimakewebthings.com/jquery-waypoints
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-16
  • 1970-01-01
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多