我的回复是专门针对https://victoriabeckham.landrover.com/INT
他们根据您提供的输入类型模拟滚动。您实际上并没有滚动页面,然后为各种属性设置动画。它正在读取触摸事件、鼠标滚轮或它们自定义的烘焙滚动条,并查看您想要滚动多少。页面中的所有内容都在一个容器中。这样,当您执行触摸事件时,它只是读取您在页面上移动了多少。
除此之外,他们还使用动画循环来让一切移动。他们正在使用 window.requestAnimationFrame 方法来优化他们页面中的更改,以便它在 iPad 和浏览器中顺利运行。这是一个带有描述的页面:
http://paulirish.com/2011/requestanimationframe-for-smart-animating/
浏览器可以将并发动画一起优化为单个
回流和重绘循环,导致更高保真度的动画。为了
例如,与 CSS 过渡或 SVG 同步的基于 JS 的动画
微笑。另外,如果您在不是
可见,浏览器不会继续运行,这意味着更少的 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 设备相关的视差限制。