рони, что это?
Сообщение от рони
|
$(window).on("mousewheel DOMMouseScroll", function(c) {
c.preventDefault();
|
К сожалению ваше решение блокирует прокрутку. Для прокрутки следует использовать событие scroll, которое происходит, когда содержимое элемента прокручивается, независимо от того, каким способом это происходит (вращение колёсика мыши, зажали среднюю кнопку мыши, перетаскиваем полосу прокрутки, жест прокрутка на сенсорном экране, клавиши Вверх/Вниз/Пробел/PgUp/PgDown/Home/End, прокрутка при помощи touchpad и ещё множество других способов). Вы же всё отменили, и ещё написали
body { overflow: hidden; }. Это не
прокрутка по блокам, а вращение колёсика мыши вызывает перемещение скрытой полосы прокрутки! Обратите внимание, что работает только при вращении колёсика мыши.
И ещё, чтобы избежать подёргивания и блокировки полосы прокрутки, не следует менять свойство scrollTop/ScrollLeft, прокрутка тогда очень не естественная получается. И странно получается, когда полоса прокрутки пытается вырваться из под курсора мыши. (поскольку происходит подмена scrollTop/ScrollLeft) Правильно делать так, чтобы при чтении scrollTop/ScrollLeft, менялся вид, а не сами эти свойства!
drkrol,
Сообщение от drkrol
|
Мне, чтобы оно плавно работало
|
Можно сделать так, чтобы сначала при прокрутке ничего не менялось, а затем при помощи своей формулы рассчитать положение содержимого
https://jsfiddle.net/u9xw6tjy/2/