4

バックラウンドの位置を変更する単純な視差効果を作成しようとしていますが、iOS Safari では動きがスムーズではありません。背景は、タッチスクリーンを離したときにのみ位置が変わりますが、スクロールしても変わりません。

Javascript:

   $(window).bind('touchmove',function(e){  
        var scrolled = $(window).scrollTop();
        $('#home').css('backgroundPosition', 'center ' + (0-(scrolled*2)) +'px');
    });

実際には、 chnaging だけでなくbackgroundPositiontopfor div 要素でも発生します。

$('#home').css('top', (scrolled*2) +'px');

同時にmargin-top正常に動作し、動きはスムーズです。

何が間違っているのですか? また、マウスホイールイベントと同じように iOS で動作させるにはどうすればよいですか?

4

1 に答える 1

1

スクロールまたはジェスチャが発生すると、iOS ブラウザは DOM 操作をフリーズします。これはブラウザの問題なので解決できません。jQuery Mobileから、次のように述べています。

iOS デバイスは、スクロール中に DOM 操作をフリーズし、スクロールが終了したときに適用するためにキューに入れることに注意してください。

于 2013-03-24T09:52:27.707 に答える