JavaScriptを使用して視差効果のあるWebサイトを再作成しようとしています。つまり、スクロール中に異なる速度で移動する 2 つ以上のレイヤーがあることを意味します。
私の場合、1 つのレイヤーのみを移動し、もう 1 つのレイヤーは静的なままです。レイヤー 1 = ウェブサイトのテキスト。レイヤー 2 = 要素の背景。
このために、単純なソース コードを使用しています (jQuery 1.6.4 を使用):
var docwindow = $(window);
function newpos(pos, adjust, ratio){
return ((pos - adjust) * ratio) + "px";
}
function move(){
var pos = docwindow.scrollTop();
element.css({'top' : newpos(pos, 0, 0.5)});
}
$(window).scroll(function(){
move();
});
問題: - すべての計算が正しく行われ、効果が期待どおりに「機能」します。ただし、一部のブラウザー (Chrome MAC/Windows、Opera MAC、IE、皮肉なことに Safari ではありません) ではパフォーマンスの不具合があります。
スクロール中に何が表示されますか? - スクロール中、背景はスクロールとともに一方向に移動しますが、時折数ピクセル前後にジャンプするようで、非常に不穏な効果 (流動的ではありません) が生じます。
私が試した解決策: - スクロール イベントを制限するタイマーを追加する - .css() メソッドの代わりに短い期間の .animate() メソッドを使用する。
また、.scrollTo メソッド (scrollTo jQuery プラグイン) を使用するとアニメーションがスムーズになることも確認しました。したがって、スクロールイベントの発生に問題があると思われます(速すぎます)。
同じ行動を観察しましたか?それを修正する方法を知っていますか?より良い解決策を投稿できますか?
すべての応答に感謝します
編集 #1: ここでは、jsfiddle のデモ (タイマー付き) を見つけることができます: http://jsfiddle.net/4h9Ye/1/