【问题标题】:scrolltop with animate not working带有动画的滚动条不起作用
【发布时间】:2013-09-17 18:01:59
【问题描述】:

我正在尝试在滚动时制作动画,但我的代码没有运气...

我有这个 jquery

$(window).scrollTop(200);

现在想给动画效果

所以尝试了这些但不起作用:

1. $(window).animate({scrollTop:200},1000);
2. $('body').animate({scrollTop: 200}, 1000);

我已经在这样的点击函数中应用了这个:

$('.goto').click(function(){
    $(window).scrollTop(485); // its working
});

现在我想赋予动画效果但不工作......

【问题讨论】:

  • 怎么不工作了?单击运行,您将看到动画
  • 不!在我的网站上.....
  • 你能发一个JSFiddle吗?
  • 请注意您的更新:您不能在$(window) 上拥有animate。请改用$('html,body')JSFiddle

标签: jquery


【解决方案1】:

我也遇到了这个问题,并意识到问题出在 CSS 内部。

就我而言,我需要删除 overflow-x: hidden;来自 HTML 标记。

删除:

html {
    overflow-x: hidden;
}

然后,它起作用了。

希望对某人有所帮助!

【讨论】:

    【解决方案2】:

    您必须使用$('html,body') 而不是$(window),因为window 没有scrollTop 属性。

    $('#scroll-bottom').on('click', function() {
      $('html, body').animate({
        scrollTop: 2000
      }, 2000); // for all browsers
      
      // $('html').animate({scrollTop: 2000}, 2000); // works in Firefox and Chrome
      // $('body').animate({scrollTop: 2000}, 2000); // works in Safari
    })
    #top {
      margin-bottom: 2000px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <div id="top">
      <button id="scroll-bottom">scroll</button>
    </div>
    <div>bottom</div>

    【讨论】:

    • 是的,在 chromesafari 中适用于 $('html,body')$(body),但在 firefox 中适用于$('html,body')$(html)。显然scrolltop 存在一些浏览器兼容性问题。但是,请使用$('html,body'),这似乎对两者都有效。
    • 有人知道移动设备的解决方案吗?
    • 如果您在模式/对话框中并且想要滚动到该部分的特定部分怎么办? Nvm:stackoverflow.com/questions/16072895/…
    • 这很奇怪我正在使用 Chrome v67.0.3396.99 并且 $('body') 无法正常工作...我必须使用 $('html, body')
    • 你救了我,我救了我$('html'),我的客户抱怨它在 safari 上不起作用。 $('html, body') 效果很好。
    【解决方案3】:

    我正在使用 Angular 并试图向下滚动到已添加到 ng-repeat 中的项目。我将此代码放在$timeout 中(时间为零,只是为了在元素显示之后发生),这足以让新项目拥有offset().top...

    ...但我认为添加几十个新元素的工作太多了,所以它没有处理滚动动画的能力。当我将超时时间设置为 1 秒时,它起作用了(尽管实际上在调用超时之前需要 7 秒)。

    我得出的结论是,动画、平滑的滚动在这里并不容易处理,而我只是在使用

    document.body.scrollTop = entry.offset().top
    

    【讨论】:

      【解决方案4】:

      如果你有 html 和 body 样式 height:100%;它不工作 使用

      height: auto;
      min-height: 100%;
      

      【讨论】:

      • 谢谢!除非我这样做,否则滚动顶部功能不起作用。
      • 太棒了!这很完美。偶然发现这一点,想得很晚,但找到了我的解决方案。太棒了!
      • 哇,这很奇怪...有height:100%,这会导致各种奇怪的滚动问题,尤其是在移动设备上...
      • 让我猜猜,我们中的许多人曾经有 height: 100% 因为粘页脚技术:)
      • 非常感谢。我在玩我的 js 代码。但是你解决了我的问题。
      【解决方案5】:

      DEMO

      <html>
      function scrollmetop(dest){
          var stop = $(dest).offset().top;
          var delay = 1000;
          $('body,html').animate({scrollTop: stop}, delay);
          return false;
      }
      
      scrollmetop('#test');
      <body>
          <div style="margin: 100px 100px 1000px 100px">
             <div id="test" style="width: 100px; height: 100px; border: 3px solid black;">target object</div>
          </div>
      </body>
      </html>
      

      【讨论】:

        【解决方案6】:

        你只需要添加像素

        $('body').animate({ scrollTop: "300px" }, 1000);
        

        【讨论】:

        • 将窗口更改为“正文”
        • 这帮我解决了,谢谢。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多