2011-03-08 81 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發佈以來,我們遇到了這個問題。 –

相關問題