拖动全景背景图像并在指南针箭头上产生效果

e0bqpujr  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(270)

当我向左或向右拖动背景图像时,也会对旋转360度的指南针图标产生影响。它在第一个周期就开始工作了。但不是在第二或第三等。。在第一个周期后,罗盘将添加一个新的间隙。所以0到360不匹配。拖动循环未在开始处结束。
我想我错过了旋转指南针图标的功能:

function setDegree(){
   const x = getCssData()
   const d = (360 / 5000) // 5000 is actual background image size.
   const r = (x - def.value) * d * -1;
   compass.value.style.transform = "rotate(" + r + "deg)"
}

为了更好地理解,我制作了一个沙盒。
p、 s:我将背景图像和compass.svg上传到了assets文件夹中,但沙盒没有显示。仍在尝试修复图像路径。。。

jhiyze9q

jhiyze9q1#

问题是您没有考虑图像的缩放。
由于是使用指定比例,因此实际宽度未知。

background-size: auto 100%;

但是,无法提供一个简单可靠的解决方案,说明如何将其添加到脚本中,这可能需要更多的重构
您可以尝试此操作,它将使用计算的高度推断宽度( w )
你只需要创建一个
ref const imgRef = ref() 并将其传递给家长 <div id="panorama" ref="imgRef" ... ```
function setDegree() {
let w = Number(getComputedStyle(imgRef.value).height.replace("px", ""))/650*5000;
const x = getCssData();
const d = 360 / w;
const r = (x - def.value) * d * -1;
compass.value.style.transform = "rotate(" + r + "deg)";
}

阿洛斯注意到
您可以将资产文件夹移动到公用文件夹并使用 `/assets/...` 为了获得更好的用户体验,将mouseup处理程序放入窗口 `window.addEventListener("mouseup", mouseUpHandler);` 在安装程序中(然后在onunmounted处删除侦听器)

相关问题