我的回答是專門爲https://victoriabeckham.landrover.com/INT
他們是根據輸入你給的類型模擬滾動。你實際上並沒有滾動頁面,然後動畫不同的屬性。它正在閱讀觸摸事件,鼠標滾輪或其自定義烘焙滾動條,並查看您想要滾動的內容。頁面中的所有內容都位於一個容器中。這樣,當你正在做觸摸事件時,它只是讀你在頁面上移動多少。
最重要的是,他們正在使用動畫循環來讓所有的東西都移動。他們利用window.requestAnimationFrame方法來優化頁面中的更改,以便在iPad和瀏覽器中順利運行。下面是它的說明頁:
http://paulirish.com/2011/requestanimationframe-for-smart-animating/ 瀏覽器可以優化當前的動畫一起到一個單一的 迴流和重繪循環,從而導致更高的保真度動畫。例如,對於 示例,基於JS的動畫與CSS轉換或SVIL SMIL同步。另外,如果您在非可見的選項卡中運行動畫循環,瀏覽器將無法繼續運行,這意味着較少的CPU,GPU,內存使用量,從而延長電池使用時間。
最重要的是,他們已經構建了一個自定義關鍵幀對象,它將決定頁面上的所有動畫。我對這個設置感到流口水。太糟糕了,這不是一個開放的框架。您可以在關鍵幀對象中設置效果開始的位置,結束位置,緩動等等,其框架將通過動畫循環處理所有其他內容。
{
selector: '#outro2 > .content2',
startAt: outroStart+500,
endAt: outroStart+1000,
onEndAnimate:function(anim) {},
keyframes: [
{
position: 0,
properties: {
"margin-top": 650
}
},
{
position: 1,
ease: TWEEN.Easing.Sinusoidal.EaseOut,
properties: {
"margin-top": 650
}
}
]
},
總之,相信自定義實現滾動的組合,以及使用該方法requestAnimationFrame自定義動畫循環獲得超出通常與iOS設備相關聯的視差限制。