私の回答は、具体的にはhttps://victoriabeckham.landrover.com/INTです。
これらは、入力の種類に応じてスクロールをシミュレートしています。実際にページをスクロールしてから、さまざまなプロパティをアニメーション化するわけではありません。タッチ イベント、マウス ホイール、またはそれらのカスタム ベイク スクロール バーを読み取り、スクロールしたい量を確認します。ページ内のすべてのコンテンツはコンテナー内にあります。そうすれば、タッチ イベントを実行しているときは、ページ上でどれだけ動いているかを読み取るだけです。
その上、アニメーション ループを使用してすべてを動かしています。彼らは、window.requestAnimationFrame メソッドを利用して、ページの変更を最適化し、iPad とブラウザーでスムーズに動作するようにしています。これについて説明したページは次のとおりです。
http://paulirish.com/2011/requestanimationframe-for-smart-animating/
ブラウザーは、同時実行アニメーションを単一のリフローおよび再描画サイクルにまとめて最適化し、より忠実度の高いアニメーションを実現できます。たとえば、CSS トランジションまたは SVG SMIL と同期した 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 デバイスに通常関連付けられている視差の制限を超えていると思います。