Показать сообщение отдельно
  #3 (permalink)  
Старый 21.05.2019, 03:17
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

рони, что это?
Сообщение от рони
    $(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/

Последний раз редактировалось Malleys, 21.05.2019 в 03:25.
Ответить с цитированием