Константин Громов: дело в том, что сайт с параллакс эффектами и сглаженным скроллом, и, когда элемент проходит проверку, всё ещё может быть виден предыдущий элемент, если резко прервать анимацию предыдущего, это будет заметно. Я пытался сделать так, что даже если элемент прошёл проверку по скроллу, его анимация не срабатывала бы, пока не закончится анимация предыдущего элемента. Если анимируется сразу несколько элементов, страдает производительность.
Константин Громов: после прокрутки до $(element).offset().top функция вызывается на каждый скролл, поэтому scrolling почти постоянно true, а из-за этого функция не срабатывает на следующих элементах
Это помогло бы, но это скрипт для полосы прокрутки, так что было бы неудобно держать курсор на ней. Нужно было в вопросе написать вместо "скроллер" - "полоса прокрутки".
Спасибо за такой большой ответ, mousemove действительно зря находится внутри mousedown, и упаковать функции стоило бы. Если интересно, то brick это ползунок полосы прокрутки, 8/3 это соотношение размеров всего контента карусели и её собственных размеров, а 785 и 0 для того, чтобы ползунок не выезжал из полосы прокрутки. Для тестового варианта поленился получать эти числа через свойства элементов.