$('html, body').animate和$('body').animate之间的区别是什么?

8 浏览
0 Comments

$('html, body').animate和$('body').animate之间的区别是什么?

例如,要滚动到页面上的某个元素(例如这里:如何跳转到页面上的特定元素?)\n

$("#fromTHIS").click(function() {
    $("html, body").animate({ scrollTop: $("#toTHIS").offset().top }, 500);
    return true;
});

\n我已经尝试了两种方法,它们似乎都能完成工作。我错过了什么吗?

0
0 Comments

问题出现的原因是需要实现跨浏览器的滚动动画效果。在上述代码中,使用了$('html, body')来实现动画效果。这是因为不同的浏览器对于滚动的元素有不同的处理方式。

解决方法是使用$('html, body')来实现动画效果。这样可以确保在不同的浏览器中都能正常工作。具体的代码如下:

//('html, body')是跨浏览器滚动动画的jQuery解决方案
$('html, body').animate({
    scrollTop: $(".abc-container").offset().top+ "-50px"
}, 300)

通过使用$('html, body')来选择滚动的元素,可以确保动画在不同的浏览器中都能正常工作。这是因为在某些浏览器中,滚动的元素是'html',而在其他浏览器中,滚动的元素是'body'。使用$('html, body')可以同时选择这两个元素,从而实现跨浏览器的动画效果。

使用$('html, body').animate来实现跨浏览器的滚动动画效果是一种常见的解决方法。通过选择这两个元素,可以确保动画在不同的浏览器中都能正常工作。

0
0 Comments

问题的出现原因是想要实现跨浏览器的滚动动画效果,但是对于不需要动画的跨浏览器解决方案,可以尝试使用$(window).scrollTop(0)来实现。

解决方法是使用$('html, body')来实现跨浏览器的滚动动画。但是如果不需要动画效果,可以直接使用$(window).scrollTop(0)来实现。

下面是一个示例代码:

$('html, body').animate({
    scrollTop: 0
}, 1000);

上述代码将会以动画的方式将页面滚动到顶部。

另外,如果你只是想要直接将页面滚动到顶部,而不需要动画效果,可以使用下面的代码:

$(window).scrollTop(0);

上述代码将会直接将页面滚动到顶部,不会有滚动的动画效果。

上述两种方法都可以实现跨浏览器的滚动效果,具体使用哪种方法取决于你是否需要动画效果。希望这篇文章能够帮助你理解和解决这个问题。

0
0 Comments

使用选择器$('html, body')的原因是因为不同的浏览器对于选择器的解析存在不一致性。经过一些测试,我发现了三件事情:

  1. 浏览器FirefoxIE会使用选择器中的html部分。
  2. 属于“webkit类别”的浏览器,例如SafariChrome,会响应选择器中的body
  3. 然而,通过使用$(document)可以完全避免这个问题。

jQuery的错误跟踪器中也有一张关于这个问题的票据,具体内容可以在这里找到。

谢谢你的意见!我有一个困惑,与第三个建议有关。从我看到的情况来看,$(document)选择的是html标签的包装器-$(document)[0].children[0]==<html>..</html>。为什么这个和$('html')不一样呢?

不幸的是,你的解决方法在Firefox v30.0上不起作用。真是太糟糕了!

$("html, body").animate({ scrollTop: 400 }, 500); 现在在我的FF30上正常工作,也许你遇到了某种冲突?

看起来jQuery要么撤下了这个票据,要么改变了链接...我会继续寻找关于这个问题的更新。

正如steve所提到的,$(document)在Firefox上不起作用。我尝试使用$('html,body'),它能正常工作。但是使用document却没有任何效果。你应该删去你的第三点。

如果你在使用这个动画的时候使用了“完成/成功”事件处理程序,这种方法会特别令人恼火,因为不管哪个选择器适用于你的浏览器,这个事件处理程序都会执行两次。

0