For one of my projects I needed even better scrolling experience then browser offers. Therefore I implemented "touchlike" drag and drop scrolling. Also I needed to bind multiple scrollers together so they scroll the same in time. (not possible with native browser scroll)
I needed such scrollable layer to create this particular component where user has all possible ways to scroll. Notice also animated pinning of group headers and date labels when scrolling.
Feel free to reuse any part of the code. There are also some useful classes as binary search and other utils, extension functions, abstract classes etc.