#javascript #jquery #events #javascript-events #mouseevent
#javascript #jquery #Мероприятия #dom-события #mouseevent
Вопрос:
Я работаю над написанием пользовательской полосы прокрутки и перехватываю mousewheel
событие. Я использую это, чтобы затем настроить scrollTop элемента, который я хочу прокрутить.
Существует ли стандартное количество пикселей, которые прокручиваются вниз, или оно варьируется от системы к системе?
Я показываю 114 пикселей в последней сборке Firefox:
Комментарии:
1. Есть mootools.net/forge/p/scrollspy и twitter.github.com/bootstrap/javascript.html#scrollspy
Ответ №1:
Многие драйверы мыши позволяют устанавливать расстояние, на которое прокручивается колесо мыши, поэтому стандартного расстояния нет. Я бы попробовал ваш код на некоторое время и выбрал расстояние, которое не позволяет вам прокручивать весь день, но не прыгает на милю при каждой прокрутке. Вам нужно как бы «прочувствовать» это. Попросите друзей оставить отзыв, это помогает позволить нескольким рукам прикоснуться к такого рода вещам.
Комментарии:
1. Я не думаю, что драйверы мыши сами по себе отвечают за «расстояние, прокручиваемое колесом мыши». Каждое событие «колесо мыши» сообщает о некотором угле поворота колеса. Перевод
WM_MOUSEWHEEL
вWM_VSCROLL
— это функция подсистемы GUI поверх драйвера.2. Я думаю, что @Kirk пытается определить, как далеко прокручивать в пикселях, а не как далеко было повернуто колесо.
Ответ №2:
Я отметил, что в Google Chrome — это 100 пикселей на прокрутку мыши
Комментарии:
1. 53 пикселя на моем ПК, также с Chrome (Ubuntu 12.04 LTS).
2. здесь тоже 53 пикселя (Ubuntu 14.04).
3. 100 пикселей, как указано в ответе — Окружающая среда: Google Chrome 87.0 (2020 год), Windows 7, 1080p
4. 4px здесь на A4Tech N-320 и OSX Catalina
Ответ №3:
Для Firefox у вас есть MozMousePixelScroll
событие, которое сообщает о количестве пикселей, которые должны быть прокручены e.detail
.
window.addEventListener('MozMousePixelScroll', function(e) {
console.log(e.detail);
});
Во многих других браузерах у вас есть mousewheel
событие, которое сообщает e.wheelDeltaY
, но они не в пикселях, и вам придется угадать количество прокручиваемых.
Также посмотрите, как SproutCore обрабатывает прокрутку в своей собственной среде (они также пишут свой собственный вид прокрутки): http://blog.sproutcore.com/scrolling-in-sproutcore /
Ответ №4:
Вам нужно будет сохранить текущую позицию прокрутки перед прокруткой, а затем, когда вы обнаружите прокрутку, получите пройденное расстояние, о котором я думаю.
Ответ №5:
Мы можем управлять с помощью javascript. Смотрите ссылку ниже. Я надеюсь, что это поможет вам.
Комментарии:
1. Похоже, у вас установлено значение 5 пикселей * значение дельты из события mousewheel.
Ответ №6:
Обычно каждая «галочка» колеса мыши соответствует некоторому настраиваемому (пользователем) количеству пикселей.
В Windows, например, расстояние, прокручиваемое при каждом нажатии колеса мыши, должно быть функцией SystemParametersInfo( SPI_GETWHEELSCROLLLINES, ...)
параметра.
Здесь вы можете найти больше информации по этому вопросу.