2016-10-14 19 views
0

(ピクセル損失を避けるため)ページをスクロールしたとき、私は要素の不透明度を変更するjQueryのscrollTopスプライト()の値を使用していますページスクロールのjQueryのscrollTopスプライト()高精度、高速

$(document).on('scroll', function(){ 
    if($(document).scrollTop() >= 1){ 
     $('#elem').css({'opacity': ($(document).scrollTop() * 0.02)}); 
    } 
}); 

それが正常に動作しますが、問題があればということです私はページをすばやくスクロールして、多くのピクセルをスキップします。その結果、返されるピクセルは私はゆっくりスクロールするときのよう

0 
30 
50 
80 
90 
... 

なく

0 
1 
2 
3 
4 

...また

私はスムーズに値を必要と同じ問題を持っていた別の時間が、複雑、この「間引き」動作もの...

どうすればこの問題を解決できますか?

+1

残念ながら、これは不可能です。パフォーマンス上の理由から、各ピクセルがスクロールされたときではなく、UIが更新されるたびに値が読み込まれます。これは、更新の間にピクセルがスキップされることを意味します。あなたはこれについて何もできません。これを修正するには、不透明度を調整するために 'opacity'値にCSSの' transition'を使用することができます –

+0

ああ、それは悪いと思う... :(この時点で私は何をすべきかわかりません。 – neoDev

答えて

2

スムーズにしたい場合は、要素にCSSトランジションを追加する必要があります。したがって、スクロールが0から500にジャンプしても、遷移はスムーズなままです。

#elem { 
    -webkit-transition: opacity 0.5s ease; 
    -moz-transition: opacity 0.5s ease; 
    transition: opacity 0.5s ease; 
} 

jQueryでスムーズなピクセル値を達成しようとすると動作しません。

+0

@Roryとしてありがとう、私は実際にプロジェクトでOKかもしれませんが、他の状況ではOKではありません。 – neoDev

+1

@neoDevあなたは両方を使うと絹のような滑らかな位置を得ることができます。 – Jesse

+0

はい私は知っていますが、いつかこれを使用する必要があることは間違いありません。 – neoDev

関連する問題