Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выбор элемента (https://javascript.ru/forum/jquery/79943-vybor-ehlementa.html)

Newb 09.04.2020 17:45

Выбор элемента
 
Доброго времени. В другой ветке создал тему, где задача стоит в перемещении (dragabble) элемента, который перекрыт другим элементом.

То есть: имеем фон-подложку, имеем фигуру на нём (position:absolute;z-index:1). Фон dragabble. За пределами фигуры двигается, при нажатии на фигуре нет (т.к. фигура становится активна).

Накрываем это дело дивом с абсолютным позиционированием и z-index:2.

Ловим наведение мыши на див-обёртку и делаем фон активным, т.е. наводим на фигуру, но активен фон и можем его двигать.

Вопрос: как сделать фон активным, чтобы при нажатии на фигуру цеплялось событие dragabble у фона? Нелепыми словами: чтобы нажатие на фигуру переадресовывалось на фон, как будто нажали не на фигуру, а на фон?

akiraki22lvl 19.09.2025 12:16

В твоём случае нужно, чтобы клики по фигуре не "ловились" самой фигурой, а как бы проходили сквозь неё к фону. Для этого в CSS есть свойство pointer-events. Если у дива-фигуры написать:
.pointer-through {
  pointer-events: none;
}

— то мышь "проходит" сквозь него, и события (например dragabble) срабатывают на фоне.
Если же нужно, чтобы иногда фигура была активна, а иногда нет, можно динамически менять это свойство через JS:
figure.style.pointerEvents = 'none'; // фон теперь перехватывает события
figure.style.pointerEvents = 'auto'; // фигура снова активна

Так фон всегда сможет реагировать на drag, даже если поверх него есть фигура.


Часовой пояс GMT +3, время: 00:07.