По каждому срабатыванию события у тебя вызывается анимация прокрутки. Поэтому и глючит. Меняй положение прокрутки вручную, не прибегая к Element.scrollTo
Jacket, я не говорил что будет легко, тебе придется на основе полученной дельты прокрутки плавно изменять значение для scrollLeft, учитывать продление анимации, смену направление и кучу прочих нюансов.
Вот в помощь простые функции плавного изменения значений, придется разобраться, как это работает и применить к своим данным. https://gist.github.com/gre/1650294
Анимировать придется в requestAnimationFrame, вовремя запускать, вовремя останавливать.
profesor08, примерно это я себе и представлял, но надеялся, что есть какой-то простой варик, которого я просто не нашел.
Дичь, конечно: вон тебе браузерные анимации, вон тебе готовый браузерный скролл, но горизонтально скролить мышкой через них нельзя - сиди изобретай свой велосипед либо бери чужой. Мде.