JS властивість Event.wheel


Загальний опис

Подія wheel спрацьовує при прокручуванні колеса миші або використанні трекпада. Ця подія надає програмісту можливість реагувати на прокрутку в будь-якому напрямку: вертикально або горизонтально. Вона може бути корисною для створення кастомних інтерфейсів або покращення стандартної прокрутки на сторінці, наприклад, зміни масштабу контенту або керування анімаціями.

Щоб використовувати подію wheel, можна додати обробник події до елемента:

const element = document.querySelector('#scrollable');
element.addEventListener('wheel', (event) => {
  console.log(`Прокручено на: ${event.deltaY}`);
});

Об'єкт події wheel містить кілька важливих властивостей, які можна використовувати для аналізу прокрутки. Наприклад, deltaY показує величину вертикальної прокрутки (від'ємне значення вказує на прокрутку вгору, додатне — вниз). deltaX відповідає за горизонтальну прокрутку.

За допомогою події wheel можна також керувати поведінкою сторінки при прокручуванні. Наприклад, щоб блокувати стандартну прокрутку сторінки, можна використовувати event.preventDefault():

element.addEventListener('wheel', (event) => {
  event.preventDefault();  // Блокує стандартну прокрутку
  // Кастомна логіка
});

Якщо необхідно збільшити чи зменшити чутливість до прокрутки, можна використовувати значення event.deltaMode. Наприклад, якщо deltaMode дорівнює 0, прокрутка здійснюється у пікселях, тоді як інші значення можуть означати прокрутку по рядках або сторінках.

Подію wheel часто використовують для масштабування контенту або керування кастомними ефектами прокрутки, зокрема для інтерактивних сторінок, слайдерів та інших елементів з унікальними інтерфейсними рішеннями.

автор: Bond

Порада

Майте на увазі, що подія wheel може спрацьовувати дуже часто (кілька разів на секунду). Якщо виконуєте важкі операції при прокручуванні, використовуйте техніки оптимізації, такі як дебаунсинг або тротлінг.

автор: Bond
Порада

Подія wheel надає можливість не тільки реагувати на прокрутку мишею, але й на подібні жести на трекпадах. Переконайтесь, що ваша логіка коректно працює для обох типів пристроїв.

автор: Bond
Порада

Використовуйте event.deltaX і event.deltaY для розрізнення вертикальної та горизонтальної прокрутки, особливо якщо ви працюєте з контентом, що може прокручуватись в обох напрямках, як у випадку зі слайдерами або складними макетами.

автор: Bond

Синтаксис

element.addEventListener('wheel', function(event) {
  // Дії при прокручуванні
});

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
31 17 7 18 12 9
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4.3 31 17

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі обробник події wheel використовується для зміни масштабу елемента. Прокрутка вниз збільшує масштаб, а прокрутка вгору зменшує його. Це корисно для реалізації кастомного масштабування зображень або інших елементів на сторінці.

HTML

<div id="zoomable">Демонстраційний елемент</div>

JS

const zoomableElement = document.querySelector('#zoomable');
let scale = 1;

zoomableElement.addEventListener('wheel', (event) => {
  event.preventDefault();
  scale += event.deltaY * -0.01;  // Збільшуємо або зменшуємо масштаб
  scale = Math.min(Math.max(.125, scale), 4);  // Обмежуємо масштаб
  zoomableElement.style.transform = `scale(${scale})`;
});
автор: Bond

Цей приклад показує, як перетворити вертикальну прокрутку на горизонтальну. Використовується значення event.deltaY для управління горизонтальною прокруткою елемента. Це може бути корисним для горизонтальних галерей або слайдерів, де користувачі можуть прокручувати вміст мишею або трекпадом.

HTML

<div id="scroller" class="scroll-demo">
    <div class="scroll-inner">Прокручуваний вміст</div>
</div>

CSS

.scroll-demo {
    width: 220px;
    height: 110px;
    overflow: auto;
    border: 1px solid #0172ad;
}

.scroll-inner {
    width: 600px;
    height: 400px;
    background: linear-gradient(135deg, #eef6ff, #0172ad);
    padding: 8px;
}

JS

const horizontalScroller = document.querySelector('#scroller');

horizontalScroller.addEventListener('wheel', (event) => {
  event.preventDefault();
  horizontalScroller.scrollLeft += event.deltaY;  // Прокручуємо горизонтально замість вертикальної прокрутки
});
автор: Bond

У цьому прикладі користувач може змінювати розмір зображення за допомогою прокручування миші. При кожному прокручуванні подія wheel коригує масштаб зображення, збільшуючи або зменшуючи його. Масштаб обмежений в межах від 0.5x до 3x для запобігання надто великих або малих значень. Кнопка "Скинути масштаб" дозволяє швидко повернутися до початкового значення масштабу (1x).

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід