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);
を 経由して干渉する必要があります。