Вход

Просмотр полной версии : MouseEvent на canvas, перекрытый div?


cupafupi
03.10.2022, 17:27
Для упрощения: есть два компонента, div и canvas. Оба занимают весь экран, div (с элементами управления) поверх canvas-а (с помощью z-index, div НЕ родитель canvas). Можно ли как-то передавать MouseEvent (клики и т.д.) на canvas?

Зачем это нужно: поверх канваса находятся элементы управления, получается что сам canvas занимает весь экран, а когда часть рисунка попадает под элементы управления - они просто перекрываются. Но проблема, что в том месте где поверх canvas'a есть div - он не отлавливает ивенты и им нельзя управлять, соответственно

voraa
03.10.2022, 19:09
Только убирать div на весь экран, делать кучу отдельных элементов управления и каждый отдельно позиционировать поверх canvas.
Тогда клики на canvas будет обрабатывать он, а каждый элемент управления свои события.

MallSerg
03.10.2022, 21:31
>> Можно ли как-то передавать MouseEvent (клики и т.д.) на canvas?

В принципе такое возможно.
На странице браузера используется "механизм всплытия событий" это когда событие вызывается по очереди у всех вышестоящих элементов DOM дерева. Так же существуют способы прервать всплытие события.

Просто тебе нужно ознакомится с механикой работы событий в браузере и делегировать захват событий вышестоящему узлу DOM чтобы получать события от div и canvas в одном месте.