【问题标题】:jQuery scrollTop and parallax effect: Browser window jitters when scrolling at the very bottomjQuery scrollTop 和视差效果:在最底部滚动时浏览器窗口抖动
【发布时间】:2014-01-28 13:25:15
【问题描述】:

我有一个创建视差效果的小脚本。因此,我创建了一个具有速度速度和数据类型的数据属性来选择视差元素。同时,其中一个元素在向下滚动时淡出。

脚本运行良好,但不幸的是,当滚动到站点底部(并“过度滚动”它)时,站点会像地狱一样抖动。这似乎是 yPos 和 scrollTop 方法的一部分。

你有什么想法吗?

这是标记:

<section class="slider">
  <img src="images/hafen.jpg" class="slide" data-type="parallax" data-speed="3">
  <div class="claim"  data-type="parallax" data-speed="6">
    <h1>SOME TEXT</h1>
  </div>
  <div class="arrow-down" data-type="parallax" data-speed="3">
    <img src="images/arrow-down.png" alt="">
  </div>
</section>
<section class="content"  data-type="parallax" data-speed="1">
  <div class="wrapper">
    <img src="images/content.png" alt="">
  </div>
<section>

这是我的脚本:

$(window).scroll(function() {
  var box;
  $("[data-type=\"parallax\"]").each(function() {
    var $bgobj, position, yPos;
    $bgobj = $(this);
    yPos = -($window.scrollTop() / $bgobj.data("speed"));
    position = parseInt(yPos);
    return $bgobj.css({
      marginTop: position
    });
  });
  box = $(".claim");
  return box.css({
    "opacity": 1 - $window.scrollTop() / 400
  });
});

【问题讨论】:

  • 您的 lasy 部分标签未正确关闭。你能检查一下这个更正吗?

标签: javascript jquery scroll parallax scrolltop


【解决方案1】:

您似乎在window 附近缺少()

yPos = -($window.scrollTop() / $bgobj.data("speed"));

应该是:

yPos = -($(window).scrollTop() / $bgobj.data("speed"));

&lt;section&gt; 并没有在最后关闭。应该是:

...
</section>

不确定使用适当的 CSS 后您的预期结果应该是什么样的,但这似乎与上述更改一起使用:

http://jsfiddle.net/4Zmh8/

$(function () {
    $(window).scroll(function () {
        var box;
        $("[data-type=\"parallax\"]").each(function () {
            var $bgobj, position, yPos;
            $bgobj = $(this);
            yPos = -($(window).scrollTop() / $bgobj.data("speed"));
            position = parseInt(yPos);
            return $bgobj.css({
                marginTop: position
            });
        });
        box = $(".claim");
        return box.css({
            "opacity": 1 - $window.scrollTop() / 400
        });
    });
});

【讨论】:

  • 谢谢!我关闭了
    。在我没有发布之前,我的窗口对象有一个全局变量 $window = $(window)。对此感到抱歉。没有任何改变:-/
  • 您能否像我在上面所做的那样在jsfiddle.net 中设置您的非工作案例,以便我们可以在那里查看?
猜你喜欢
  • 2018-11-29
  • 2012-11-06
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
  • 1970-01-01
相关资源
最近更新 更多