Наповнення JS розділу

Добридень, Пані та Панове, завдяки вам вдалося зібрати більше 19тис грн з необхідних 15тис на впровадження JS розділу.

JS розділ вже впроваджено - переходимо до його наповнення і почнемо бігти довгий марафон, адже JS має більше 1100 різноманітних методів, властивостей, подій і т.д., які необхідно описати.

Будемо працювати, і вдень, і вночі, щоб орієнтовно взимку закінчити наповнювати JS розділ!

Ви також можете допомогти нам в цьому. Долучайтеся до нашої спільноти в дискорді - ставайте її частиною і допомагайте нашому розвитку.

Також, підтримуйте нас матеріально.

JS об'єкт Mouse

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

Mouse Events – це набір подій JavaScript, пов'язаних із взаємодією користувача з мишею. До них належать події натискання, наведення, переміщення миші та інші дії. Основні події миші: click (клік), dblclick (подвійний клік), mousedown (натискання кнопки миші), mouseup (відпускання кнопки миші), mousemove (переміщення курсора), mouseover (наведення на елемент), mouseout (вихід курсора за межі елемента) тощо.

Щоб працювати з подіями миші, зазвичай використовують метод addEventListener, який дозволяє додати обробник до конкретної події на елементі. Наприклад:

document.getElementById('myElement').addEventListener('click', function(event) {
  console.log('Елемент було клікнуто!');
});

У цьому прикладі обробник події виконує функцію при кліку на елемент з ідентифікатором myElement, виводячи повідомлення в консоль.

Для Mouse Events часто використовують об'єкт event, що передається до обробника події. Він містить корисну інформацію про подію, зокрема координати курсора миші (event.clientX та event.clientY), яка кнопка миші була натиснута (event.button), та інші деталі.

Ще один корисний приклад – mousemove, який активується щоразу, коли користувач переміщує мишу. Це часто використовується для створення інтерактивних ефектів:

document.addEventListener('mousemove', function(event) {
  console.log('Курсор на позиції:', event.clientX, event.clientY);
});

Подія mousemove активується кожного разу при переміщенні курсора миші, дозволяючи отримати координати його поточного положення.

Події миші також можуть підтримувати взаємодії з іншими подіями, як-от keydown чи touchstart, для забезпечення більшої доступності інтерфейсу. Щоб видалити обробник події, можна використовувати метод removeEventListener, який приймає назву події і функцію, яку необхідно видалити.

Порада:

Для уникнення випадкових кліків під час навігації через інтерфейс, можна перевіряти тип кнопки, використовуючи event.button. Це допоможе розрізняти лівий, правий і середній клік.

Подія contextmenu дозволяє налаштувати користувацьке контекстне меню, заблокувавши стандартне меню:

element.addEventListener('contextmenu', function(event) {
  event.preventDefault();
  // ваше меню
});
Порада:

Якщо потрібен багаторазовий облік кліків, можна використати подію dblclick замість реалізації подвійного кліку вручну.

Порада:

Використовуйте mouseover та mouseout з обережністю – ці події можуть активуватися щоразу, коли курсор минає вкладені елементи. Щоб уникнути цього, можна використовувати mouseenter і mouseleave, які спрацьовують лише при вході або виході з конкретного елемента.

Синтаксис

element.addEventListener('eventName', function(event) {
  // код обробника події
});

Переглядачі

Переглядач

1

1

1

10.6

12

Переглядач

4.4

18

4

1

Переглядач

-

-

Приклади


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

У цьому прикладі відстежується область, яку користувач виділяє, натискаючи та перетягуючи мишу. Обробник mousemove зберігає розміри виділеної області, а після відпускання кнопки видаляється для оптимізації продуктивності.

document.addEventListener('mousedown', function(event) {
  const startX = event.clientX;
  const startY = event.clientY;
  function onMouseMove(event) {
    const width = event.clientX - startX;
    const height = event.clientY - startY;
    console.log('Розмір виділення:', width, height);
  }
  document.addEventListener('mousemove', onMouseMove);
  document.addEventListener('mouseup', function() {
    document.removeEventListener('mousemove', onMouseMove);
  }, { once: true });
});

Цей приклад показує базову реалізацію "перетягування" для елемента. mousemove оновлює позицію елемента в міру переміщення миші. Це особливо корисно для створення інтерфейсів, де користувач може змінювати положення об'єктів на екрані.

const element = document.getElementById('draggable');
element.addEventListener('mousedown', function(event) {
  const startX = event.clientX - element.offsetLeft;
  const startY = event.clientY - element.offsetTop;
  function onMouseMove(event) {
    element.style.left = `${event.clientX - startX}px`;
    element.style.top = `${event.clientY - startY}px`;
  }
  document.addEventListener('mousemove', onMouseMove);
  document.addEventListener('mouseup', function() {
    document.removeEventListener('mousemove', onMouseMove);
  }, { once: true });
});

Методи

initMouseEvent()
Ініціалізує об'єкт події миші з вказаними властивостями. Використовується для створення налаштованої події миші, але застарілий і не рекомендується для використання в сучасних додатках.
getModifierState()
Перевіряє стан клавіш-модифікаторів (таких як `Alt`, `Shift`, `Control`, `Meta`) під час події миші. Повертає `true`, якщо зазначена клавіша активна, інакше `false`.

Властивості

movementX
Вказує на зміну позиції курсора по осі `X` з моменту попередньої події.
movementY
Вказує на зміну позиції курсора по осі `Y` з моменту попередньої події.
offsetX
Відстань курсора по осі `X` відносно елемента, на якому виникла подія.
offsetY
Відстань курсора по осі `Y` відносно елемента, на якому виникла подія.
pageX
Позиція курсора по осі `X` відносно всього документа, враховуючи прокрутку.
pageY
Позиція курсора по осі `Y` відносно всього документа, враховуючи прокрутку.
relatedTarget
Елемент, пов'язаний з подією миші, наприклад, елемент, з якого курсор був наведений чи видалений.
altKey
Повертає `true`, якщо під час події миші була натиснута клавіша `Alt`, інакше `false`.
button
Вказує на натиснуту кнопку миші під час події (0 – ліва, 1 – середня, 2 – права).
buttons
Повертає число, яке представляє всі активні кнопки миші під час події (ліві, праві, середні або комбінації).
clientX
Позиція курсора по осі `X` відносно області перегляду браузера.
clientY
Позиція курсора по осі `Y` відносно області перегляду браузера.
ctrlKey
Повертає `true`, якщо під час події була натиснута клавіша `Control`.
layerX
Відстань курсора по осі `X` відносно батьківського контейнера, якщо є.
layerY
Відстань курсора по осі `Y` відносно батьківського контейнера, якщо є.
metaKey
Повертає `true`, якщо під час події була натиснута клавіша `Meta` (Command на Mac).
screenX
Позиція курсора по осі `X` відносно екрана пристрою.
screenY
Позиція курсора по осі `Y` відносно екрана пристрою.
shiftKey
Повертає `true`, якщо під час події була натиснута клавіша `Shift`.
mozInputSource
Унікальна властивість для Firefox, яка вказує на джерело події (наприклад, миша або стилус).
webkitForce
Унікальна властивість для Safari, що повертає силу натискання при взаємодії з сенсорним екраном (підтримується лише в Safari).
x
Позиція курсора по осі `X`, аналогічна до `clientX`, але доступна як альтернатива для сумісності.
y
Позиція курсора по осі `Y`, аналогічна до `clientY`, але доступна як альтернатива для сумісності.