【问题标题】:cross browsers jquery animate scrollTop跨浏览器 jquery 动画滚动顶部
【发布时间】:2012-05-11 14:51:17
【问题描述】:

我在使用 jquery animate scrollTop 到定义的 div 时遇到问题。

我使用这段代码为滚动设置动画:

$('body').animate({scrollTop: $('#sections_display').offset().top-100}, 500, function(){
    $('#ajax_load').load('file.php');
});

但这在 Firefox 或 IE 中不起作用。

当我使用 $('html').animate 而不是 $('body').animate 时,它在 Chrome 中不起作用。

我也尝试同时使用这两者:$('html,body').animate,但问题是回调函数 $('#ajax_load').load('file.php'); 被执行了两次,这调用了文件 2 次。

我通过使用 php 临时解决了这个问题,但是这个解决方案迫使我在每个页面中重复代码 2 次,以创建 2 个支持 $('body').animate$('html').animate 的浏览器数组。

我在这里搜索并找到了这个:jquery animate scrolltop callback 但没用。

我也试过了:

$(window).animate

$(document).animate

$('#container-div').animate

但没有办法做到这一点。

我能找到一个跨浏览器的方法来实现这个吗?

【问题讨论】:

    标签: javascript jquery scrolltop


    【解决方案1】:

    Hacky 解决方案可能会成功...

    $('html,body').animate({scrollTop: $('#sections_display').offset().top-100}, 500);
    
    setTimeout(function(){
        $('#ajax_load').load('file.php');
    }, 500);
    

    【讨论】:

    • delay(500) 没有任何效果,我不知道为什么?我测试了延迟(10000),但结果相同“没有延迟”
    • Himm... 是的,看起来 load() 方法不会排队,但我在答案中添加了另一个解决方案,应该可以解决问题
    【解决方案2】:

    this post中所述

    它不适用于所有主流浏览器。当应用于“html”时,并非所有这些都支持滚动,有些需要“body”。这取决于您是否处于怪癖模式。动画 iframe 时问题更大

    主题启动器最终将动画应用于html,body,而不是彼此。

    【讨论】:

    • 是的,我读了这篇文章,但我决定搜索并询问是否有任何黑客攻击它
    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 2011-09-06
    相关资源
    最近更新 更多