2011-03-08 44 views
4

我必须使用$('html, body').animate()才能使片段完全跨浏览器兼容,但这在链接动画时很不方便,因为它们有时会同时作用于<html><body>

IE8依赖于'HTML',而Chrome或Safari依赖于'身体',所以我必须包括两者。

为什么这种差异?

+0

IE与哪个版本有关? – BoltClock

+0

@BoltClock - 我想象所有,因为我怀疑MS会改变浏览器的基本构建方式 – Alex

+0

@Alex:他们确实在根级别附近使用了DOM。在IE6中,'html'不是根元素;在IE7中,'html'和另一个元素在根级别。 – BoltClock

回答

5

我认为这是因为滚动条(我认为您正在制作动画)内置于浏览器的不同位置。我以前遇到过这个问题,不得不使用与您合并的相同方法。有点烦人,但是当你希望它们在所有浏览器上工作时,大多数情况都是如此:-)

+0

是的,我猜IE浏览器将滚动条附加到HTML,而其他人将它附加到BODY。 – trusktr

0

因为你只应该动画内容并且html标签不是内容标签,所以你永远不应该做$('html').animate。坚持$('body').animate,它应该适用于所有浏览器。

+1

该代码仅适用于使用'html'的IE8。使用“身体”,没有任何反应。具体来说,我正在使用的动画是'scrollTop'来滚动页面到指定的内容。使用“body”仅适用于Chrome/Safari。因此,我必须包含这两个,所以它适用于所有的浏览器。 – trusktr

+0

不正确,'body'在IE9中无法正常工作 –

+0

虽然在概念上,我同意'html'标签不应该是动画的,但由于浏览器制造商的决定,网页设计师/开发人员必须能够构建脚本,功能提供了预期的效果。自从Internet Explorer发布以来,我们遇到了这个问题。 –

相关问题