如何将坐标转换为相对变换 px

How to convert coordinates to relative transform px

提问人:Tanzirul Huda 提问时间:10/26/2023 更新时间:10/26/2023 访问量:38

问:

我想通过计算鼠标单击坐标在容器内移动 ping。

我试图在这些img中得到类似的东西(蓝色是鼠标点击,红色是ping),

图像 1 图像 2

<div class="h-screen w-full bg-gray-100 flex justify-center items-center">
    <div class="relative container w-72 h-72 bg-white" id="container">
      <span class="bg-red-500 absolute h-8 w-8 rounded-full top-0 left-0 z-50" id="ping"></span>
    </div>
  </div>
document.addEventListener('click', (e) => {
      const container = document.getElementById('container');
      const ping = document.getElementById('ping');

      // Calculate the position relative to the container
      const containerRect = container.getBoundingClientRect();
      console.log(e.clientX, e.clientY)
      let x = e.clientX - containerRect.left;
      let y = e.clientY - containerRect.top;
      console.log({ x, y })

      console.log(containerRect);
      x = Math.max(0, Math.min(containerRect.width, x));
      y = Math.max(0, Math.min(containerRect.height, y));

      ping.style.transform = `translate(${x}px, ${y}px)`;

    })

我认为这些图像是有道理的,我真的不知道我该如何正确解释,在这里感觉完全是胡说八道。

javascript css css-transforms 坐标转换

评论

1赞 Kaiido 10/26/2023
您需要将这些坐标转换为比率,然后将这些比率应用回目标元素的大小以获得新的坐标。
0赞 Tanzirul Huda 10/26/2023
你能举个例子吗?
0赞 Kaiido 10/26/2023
如果您提供足够的信息,以便我们有一个最小的可重现示例,将会有所帮助。我没有时间重现不同大小的元素。
0赞 CBroe 10/26/2023
你在学校里没有三角学吗......?您想要计算正方形中间与鼠标单击坐标之间的角度。然后以相同的角度将红点从中心移动,只是长度较短。(无论你是希望这个长度是静态的,还是与点击发生的中心有多远有关,我目前无法从你的图像中看出。
0赞 Community 10/26/2023
请提供足够的代码,以便其他人可以更好地理解或重现问题。

答: 暂无答案