如何解决拖动全景 bg 图像并对罗盘箭头产生影响
当我向左或向右拖动背景图像时,也会对旋转 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 上传到资产文件夹,但沙箱没有显示。仍在尝试修复图像路径...
解决方法
问题在于您没有考虑图像的缩放。
因为您使用的是指定比例,所以实际宽度未知。
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 处删除侦听器)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。