知識ポイントを含みます:
window.scrollToは(X、Y) requestAnimationFrameの(() => {}) // フレームアニメーション、利点:リフレッシュレンダラブラウザによって、よりスムーズ。特徴:のsetTimeoutと同様に、一度だけ実行されます
どのようなコードに言われていません。
numが到達する位置、デジタルタイプです。呼び出し:this.transitionScroll(100)
transitionScroll =(NUM)=> { CONST N = window.pageYOffset。 もし(NUM < N){ この.ScrollDown(NUM) } であれば(NUM> N){ この.ScrollUp(NUM) } } ScrollDown =(NUM)=> { CONST感度 = 5。// 灵敏度 window.requestAnimationFrame(()=> { CONST N = window.pageYOffset; CONST Dvalue = Math.abs(NUM - n)は、 もし + N(NUM>感度){ window.scrollToは( 0、N +のparseInt(Dvalue / 感度)) この.ScrollDown(NUM) } }) } ScrollDown =(NUM)=> { CONST感度 = 5 。 window.requestAnimationFrame(() => { CONST N = window.pageYOffset; CONST Dvalue = Math.abs(NUM - N); 場合(NUM <N - {感度) window.scrollToは( 0、N -のparseInt(Dvalue / 感度)) この.ScrollDown(NUM) } }) }