
В этом разделе вы познакомитесь с основами обработки событий мыши в JavaScript. Вы научитесь добавлять обработчики событий на элементы DOM, реагировать на различные действия пользователя, такие как клики, наведение курсора и другие. Задания построены от простого к сложному, чтобы вы могли постепенно углублять свои знания и навыки. Внимательно читайте описания заданий и используйте подсказки, если возникают трудности.
- Модуль 1: Основы выбора элементов
- Выбор элемента по ID.
- Выбор элементов по классу.
- Выбор элементов по тегу.
- Выбор по селектору CSS.
- Выбор по атрибуту.
- Поиск элементов внутри другого элемента.
- Поиск родительского элемента.
- Поиск соседних элементов (предыдущий, следующий).
- Поиск первого и последнего дочернего элемента.
- Поиск всех дочерних элементов.
- Модуль 2: Манипуляция содержимым
- Модуль 3: Работа с атрибутами
- Модуль 4: Управление классами
- Модуль 5: Управление стилями
- Модуль 6: Создание и удаление элементов
- Создание нового элемента.
- Вставка элемента перед другим элементом.
- Вставка элемента после другого элемента.
- Добавление элемента в определенную позицию внутри списка дочерних элементов.
- Удаление элемента из DOM.
- Замена одного элемента другим.
- Перемещение существующего элемента в другое место DOM..
- Очистка содержимого элемента без его удаления.
- Модуль 7: Обработка событий
- Модуль 8: Работа с формами
- Модуль 9: Продвинутые манипуляции
- Модуль 10: Работа с размерами и прокруткой
- Получение размеров элемента.
- Получение позиции элемента относительно окна браузера.
- Получение позиции элемента относительно родительского элемента.
- Управление прокруткой страницы.
- Определение, виден ли элемент в текущей области просмотра.
- Плавная прокрутка к элементу.
- Создание элемента, который фиксируется при прокрутке.
- Модуль 11: Работа с медиа-элементами
- Модуль 12: Практические задания
Задание 1: Клик по кнопке
Добавьте обработчик события 'click' на кнопку. При клике на кнопку, текст в параграфе должен измениться на 'Клик!', используя метод `getElementById` для доступа к параграфу.
<button id="myButton">Кнопка</button>
<p id="myParagraph">Нажми на кнопку</p>
const button = document.input__1("myButton");
const paragraph = document.input__2("myParagraph");
button.addEventListener('input__3', function() {
paragraph.input__4 = "Клик!";
});
Задание 2: Двойной клик
Измените текст параграфа на 'Двойной клик!' при двойном клике на кнопку. Используйте событие 'dblclick'.
<button id="doubleClickButton">Двойной клик</button>
<p id="doubleClickParagraph">Двойной кликни по кнопке</p>
const button = document.input__1("doubleClickButton");
const paragraph = document.input__2("doubleClickParagraph");
button.addEventListener('input__3', function() {
paragraph.input__4 = "Двойной клик!";
});
Задание 3: Наведение мыши
Измените цвет фона кнопки при наведении курсора мыши на нее. Используйте событие 'mouseover' и свойство `style.backgroundColor`.
<button id="hoverButton" style="background-color: lightblue;">Наведи мышь</button>
const button = document.input__1("hoverButton");
button.addEventListener('input__2', function() {
button.style.input__3 = "yellow";
});
Задание 4: Уход мыши
Верните исходный цвет фона кнопки, когда курсор мыши уходит с кнопки. Используйте событие 'mouseout'.
<button id="outButton">Убери мышь</button>
const button = document.input__1("outButton");
button.addEventListener('input__2', function() {
button.style.input__3 = "lightblue";
});
Задание 5: Изменение текста при наведении и уходе
Измените текст кнопки на 'Навели!' при наведении мыши и на 'Убрали!' при уходе мыши. Используйте события 'mouseover' и 'mouseout'.
<button id="textButton">Наведи/Убери</button>
const button = document.input__1("textButton");
button.addEventListener('input__2', function() {
button.input__3 = "Навели!";
});
button.addEventListener('input__4', function() {
button.input__5 = "Убрали!";
});
Задание 6: Координаты мыши
Выведите координаты X и Y курсора мыши в параграф при движении мыши в пределах блока `div`. Используйте событие 'mousemove' и свойства `event.clientX` и `event.clientY`.
#mouseArea {
width: 200px;
height: 100px;
border: 1px solid black;
}
<div id="mouseArea">Двигайте мышью здесь</div>
<p id="coordsParagraph">Координаты: </p>
const mouseArea = document.input__1("mouseArea");
const coordsParagraph = document.input__2("coordsParagraph");
mouseArea.addEventListener('input__3', function(event) {
coordsParagraph.input__4 = `Координаты: X: ${event.input__5}, Y: ${event.input__6}`;
});
Задание 7: Изменение размера блока при движении мыши
Увеличивайте ширину блока `div` при движении мыши вправо и уменьшайте при движении влево. Начальная ширина блока 100px. Используйте 'mousemove', `event.clientX` и `style.width`.
#resizeArea {
width: 100px;
height: 50px;
background-color: lightgreen;
}
<div id="resizeArea">Изменяемый блок</div>
const resizeArea = document.input__1("resizeArea");
let initialX = null;
resizeArea.addEventListener('input__2', function(event) {
if (initialX === null) {
initialX = event.input__3;
} else {
const deltaX = event.input__4 - initialX;
resizeArea.style.input__5 = `${100 + deltaX}px`;
}
});
Задание 8: Клик и удержание кнопки
Измените текст кнопки на 'Удерживаю!' при нажатии кнопки мыши (mousedown) и на 'Отпустил!' при отпускании (mouseup).
<button id="holdButton">Нажми и удерживай</button>
const button = document.input__1("holdButton");
button.addEventListener('input__2', function() {
button.input__3 = "Удерживаю!";
});
button.addEventListener('input__4', function() {
button.input__5 = "Отпустил!";
});
Задание 9: Перемещение элемента мышью
Перемещайте блок `div` по странице, перетаскивая его мышью. Используйте 'mousedown', 'mousemove', 'mouseup' и свойства `style.position`, `style.left`, `style.top`.
#draggableDiv {
position: absolute;
width: 50px;
height: 50px;
background-color: orange;
cursor: grab;
}
<div id="draggableDiv">Перетащи меня</div>
const draggableDiv = document.input__1("draggableDiv");
let offsetX, offsetY;
let isDragging = false;
draggableDiv.addEventListener('input__2', function(event) {
isDragging = true;
offsetX = event.clientX - draggableDiv.offsetLeft;
offsetY = event.clientY - draggableDiv.offsetTop;
});
document.addEventListener('input__3', function(event) {
if (isDragging) {
draggableDiv.style.input__4 = `${event.clientX - offsetX}px`;
draggableDiv.style.input__5 = `${event.clientY - offsetY}px`;
}
});
document.addEventListener('input__6', function() {
isDragging = false;
});
Задание 10: Клик по изображению
При клике на изображение, измените его `src` на другое изображение из предложенных. Используйте массив URL-адресов изображений и меняйте `src` по кругу.
<img id="clickableImage" src="https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike2-300x300.png" width="100">
const image = document.input__1("clickableImage");
const imageUrls = [
"https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike2-300x300.png",
"https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike-300x300.png",
"https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike3-300x300.png",
"https://naytikurs.ru/assets/uploads/2025/03/3d-modelirovanie-i-vizualizatsiya-test-dlya-spetsialistov-v-trehmernoj-grafike4-300x300.png"
];
let currentImageIndex = 0;
image.addEventListener('input__2', function() {
currentImageIndex = (currentImageIndex + 1) % imageUrls.length;
image.input__3 = imageUrls[currentImageIndex];
});
Задание 11: Контекстное меню по правому клику
Отмените стандартное контекстное меню при правом клике мыши на блоке `div` и выведите сообщение 'Правый клик запрещен!' в параграф. Используйте событие 'contextmenu' и метод `event.preventDefault()`.
#contextMenuArea {
width: 200px;
height: 100px;
border: 1px solid red;
}
<div id="contextMenuArea">Правый клик здесь</div>
<p id="contextMenuParagraph"></p>
const contextMenuArea = document.input__1("contextMenuArea");
const contextMenuParagraph = document.input__2("contextMenuParagraph");
contextMenuArea.addEventListener('input__3', function(event) {
event.input__4();
contextMenuParagraph.input__5 = "Правый клик запрещен!";
});