我必须使用$('html, body').animate()
才能使片段完全跨浏览器兼容,但这在链接动画时很不方便,因为它们有时会同时作用于<html>
和<body>
。
IE8依赖于'HTML',而Chrome或Safari依赖于'身体',所以我必须包括两者。
为什么这种差异?
我必须使用$('html, body').animate()
才能使片段完全跨浏览器兼容,但这在链接动画时很不方便,因为它们有时会同时作用于<html>
和<body>
。
IE8依赖于'HTML',而Chrome或Safari依赖于'身体',所以我必须包括两者。
为什么这种差异?
我认为这是因为滚动条(我认为您正在制作动画)内置于浏览器的不同位置。我以前遇到过这个问题,不得不使用与您合并的相同方法。有点烦人,但是当你希望它们在所有浏览器上工作时,大多数情况都是如此:-)
是的,我猜IE浏览器将滚动条附加到HTML,而其他人将它附加到BODY。 – trusktr
因为你只应该动画内容并且html标签不是内容标签,所以你永远不应该做$('html').animate
。坚持$('body').animate
,它应该适用于所有浏览器。
该代码仅适用于使用'html'的IE8。使用“身体”,没有任何反应。具体来说,我正在使用的动画是'scrollTop'来滚动页面到指定的内容。使用“body”仅适用于Chrome/Safari。因此,我必须包含这两个,所以它适用于所有的浏览器。 – trusktr
不正确,'body'在IE9中无法正常工作 –
虽然在概念上,我同意'html'标签不应该是动画的,但由于浏览器制造商的决定,网页设计师/开发人员必须能够构建脚本,功能提供了预期的效果。自从Internet Explorer发布以来,我们遇到了这个问题。 –
IE与哪个版本有关? – BoltClock
@BoltClock - 我想象所有,因为我怀疑MS会改变浏览器的基本构建方式 – Alex
@Alex:他们确实在根级别附近使用了DOM。在IE6中,'html'不是根元素;在IE7中,'html'和另一个元素在根级别。 – BoltClock