Как создать счетчик прокрутки колесика мыши

Как я могу посчитать прокрутку мыши, используя чистый JS?
Пример:

значение по умолчанию: 0
прокрутите вниз: ++1
прокрутить вверх: --1

Я пытался сделать это, используя deltaY и переключатель.

let mouseWheel = 0;
switch (deltaY) {
  case 100:
    if (mouseWheel > 0) {
      mouseWheel += 1;
    } else if (mouseWheel < 0) {
      mouseWheel = 0;
    }
    break;
  case -100:
    if (mouseWheel > 0) {
      mouseWheel -= 1;
    } else if (mouseWheel < 0) {
      mouseWheel = 0;
    }
    break;
  default:
    break;
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
68
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете использовать событие wheel , чтобы обнаружить изменения колесика мыши и соответственно добавить/вычесть счетчик.

В моем примере предполагается, что вы проверяете только вертикальную прокрутку (т. е. изменение deltaY). Не стесняйтесь вносить изменения в код, если вам также нужно проверить горизонтальную прокрутку.

Я думаю, вы не хотите жестко запрограммировать изменение deltaY (например, 100 или -100), потому что разные люди могли настроить разную величину прокрутки, и это нарушит ваше утверждение switch.

const containerEle = document.querySelector("#container")

let mouseWheelCounter = 0;

containerEle.addEventListener("wheel", (wheel) => {
  if (wheel.deltaY > 0) {
    mouseWheelCounter++;
  }else{
    mouseWheelCounter--;
  }
  console.info(mouseWheelCounter) 
})

Вот пример с JSFiddle

Ответ принят как подходящий
  • Получите deltaY от WheelEvent
  • Используйте Math.sign(), чтобы получить соответствующее значение -1 или 1.
  • Используйте Math.max(), чтобы предотвратить значения ниже 0

let mouseWheel = 0;

addEventListener("wheel", (evt) => {
  mouseWheel += Math.sign(evt.deltaY);  // Add or subtract 1
  mouseWheel = Math.max(0, mouseWheel); // Prevent negative value
  console.info(mouseWheel);
});
Scroll down and up

Как уже говорили другие, вы ищете событие колесо. Это событие прослушивает вращение колеса мыши (или других указательных устройств), а затем позволяет вам получить доступ к его свойству deltaY, которое сообщает вам, «как далеко» прокрутил пользователь.

Вы также можете использовать deltaMode, чтобы убедиться, что вы используете правильные единицы измерения.

let mouseWheel = 0;

window.addEventListener('wheel', function(event) {
    if (event.deltaY > 0) {
        mouseWheel ++; // scroll down
    } else if (event.deltaY < 0) {
        mouseWheel--; // scroll up
    }
    console.info(count);
}, false);

Другие вопросы по теме