Smooth Scroll

vimperator/smooth-scroll.js at master · caisui/vimperator · GitHub


buffer の Smooth Scroll 化です。

hjkl,gg,G等ほぼ全てが Smooth Scroll になります。
ただし、は無理です。


デフォルトのスクロース時間は、300ms です。
変更したい場合は、

let smooth_scroll_duration=200

で変更できます。


以下変更にあたって、bufferの挙動変更点です。

  • window決め打ち系(g,GG等) の スクロール対象も hjklと同様 caret 位置から遡る
  • frame,iframeも遡り scrollbarを探します。
  • 画面外スクロールバーは無視


これ mozRequestAnimationFrame を使ってみたのですが、
私の環境では60fpsでています。




最後に、問題点です。


他のscroll と干渉(競合?)します。
アニメーション描画の都合上途中で、
他のスクロールが発生しても影響を受けずにそのまま続きを描写します。


どうしても、途中で操作したいなら、
buffer経由
あるいは

plugins.smoothScroll.scrollBy(node, x, y);

plugins.smoothScroll.scrollTo(node, x, y);

を 経由して干渉する必要があります。