Я пытаюсь собрать интерфейс перетаскивания, который позволяет пользователю перетаскивать div на странице, которая ограничена внутренней частью нерегулярного закрытого пути SVG.
Вот пример - оранжевый квадрат - это мой перетаскиваемый элемент, а серый SVG-путь - это то, к чему я хочу привязать его при выпадении:
<div class="drag-parent">
<svg xmlns="http://www.w3.org/2000/svg" width="141.019" height="74.065" viewBox="0 0 141.019 74.065">
<defs>
<style>
.target {
fill: #333;
}
</style>
</defs>
<path id="Path_4569" data-name="Path 4569" class="target" d="M0,0H141.018V74.065h-24.27V37.033H10.88V12.971H0Z"/>
</svg>
<div class="draggable" style="width:20px;height:20px;background:orange;cursor:pointer;"></div>
</div>
То, что я хотел бы сделать, это проверить перетаскиваемый элемент div при его перетаскивании, чтобы убедиться, что он полностью находится внутри замкнутого пути моего SVG.
Я использую GSAP Draggable, чтобы позаботиться о перетаскивании элемента, но я озадачен тем, как проверить, находится ли он внутри этого пути или нет.
До сих пор я пытался isPointInFill
, однако, похоже, что в chrome nomatter это возвращает true, что я и даю.
Я также пытался использовать mouseenter
/ mouseleave
события на пути, который является отличной отправной точкой; но когда вы перетаскиваете что-то, эти события не запускаются, поскольку указатель мыши находится «поверх» перетаскиваемого элемента, а не пути SVG.
Что может быть хорошим способом наложения границ пути SVG - или есть более простой способ наложения нерегулярных границ на перетаскиваемых объектах?