私は様々な理由からHTML5キャンバスを使用して視差エスク効果を作成しようとしています。私はwindow.scrollYプロパティを使用して、ユーザーがスクロールした距離を判断し、この値を使って変換を計算することができました。キャンバスの計算にwindow.scrollYを使用すると問題が発生する
私は、これが最良のan exampleを通じて説明されていたとします
function draw() {
scrollOffset = window.scrollY;
ctx.clearRect(0, 0, width, height);
ctx.fillStyle = "#000";
ctx.fillRect((width/2) - (size/2), ((height/2) - (size/2)) + scrollOffset, size, size);
requestAnimationFrame(draw);
}
あなたが使用しているもののブラウザによっては、見ることができるように、あなたはスクロールによって引き起こされる「glitchiness」の様々なレベルがあるでしょう。センターの正方形は、全時間同じ場所にとどまるべきですが、ユーザーがどれだけスクロールしたかに追いつくことに問題があります。
どのようなブラウザを使用しているかにより、この問題が顕著になります。 Chromeはスクロールの方向を急速に変更すると目立ちますが、FirefoxとEdgeはスクロールの速度に関係なく目立ちます。
これについてもっと良い方法がありますか?
JS [スクロール結合効果](https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Scroll-linked_e ffects)は、非同期スクロールのためにこのような問題があります。通常、解決策は、固定位置CSSを使用することです。 –
通常の状況では@ AlexanderO'Mara、私は 'position:fixed'を使用しますが、実際のコードでは実際の「視差」効果(要素は固定されず、ページをゆっくり動かします)とI異なる速度で移動する複数の要素を持つ – mattrick
スクロール中にすべての要素に対して 'pointer-events:none'を設定してみましょう。スクロールベースのエフェクトをスムーズにする一般的なテクニックです... – CBroe