gpt4 book ai didi

javascript - 将图像放在彼此之上时,CSS/JS 顶部和左侧会变形

转载 作者:行者123 更新时间:2023-11-27 23:34:00 25 4
gpt4 key购买 nike

我有一张篮球场的图像,想在球场上放置一个绿点或红点(如果从那个点投篮则为绿色,如果未命中则为红色)。

有人点击球场图像记录篮球投篮,然后将坐标(以百分比表示)保存到数据库中。完成记录后,在单独的 View 上,我将调用所有这些坐标并为它们设置以下参数:

var marker = document.createElement("IMG");
marker.src = image;
marker.style.width = '4%';
marker.style.position = 'absolute';
marker.style.left = offsetLeft + "%";
marker.style.top = offsetTop + "%";
shotChartBox.appendChild(marker);

offetLeft 和 Top 都是 DB 中的值乘以 100 并给出一个 % 符号。

但是,当我这样做时,这些点总是会稍微偏离一点。如果有人点击球场图像的正中心,该点将出现在右上方。我知道这不是数据捕获问题,因为当我进入浏览器检查工具并手动设置一个点的顶部和左侧值恰好为 50% 时,同样的事情发生了。

我曾尝试考虑点本身的 4% 宽度,但未能找到一种方法来做到这一点并使其适用于所有浏览器尺寸。当我在各处增加或减少 2% 后调整浏览器大小时,它总是让事情变得更糟。

如果您有任何想法,请告诉我。我觉得好像有我不知道的定位或 JS 东西。

//A couple example function calls
displayMarker(0.5, 0.5, "https://i.postimg.cc/8CLJ8Wj6/makeIcon.png");
displayMarker(0.25, 0.25, "https://i.postimg.cc/mDRcTDH6/missIcon.png");

function displayMarker(x, y, image) {
var courtImage = document.getElementById('shotChart');
var shotChartBox = document.getElementById('shotChartBox');

var offsetLeft = x * 100;
var offsetTop = y * 100;

var marker = document.createElement("IMG");
marker.src = image;
marker.style.width = '4%';
marker.style.position = 'absolute';
marker.style.left = offsetLeft + "%";
marker.style.top = offsetTop + "%";
shotChartBox.appendChild(marker);
}
<h2>Shot Chart</h2>
<div id="shotChartBox">
<img id="shotChart" src="https://i.postimg.cc/rswKtPg1/shot-Chart.png" width="100%" />
</div>

JSFiddle demo .

最佳答案

假设 0.5,这里 0.5 相当于球场的中心是一个可行的解决方案。

<html>
<style></style>

<body>
<div id="shotChartBox" style="position: relative;">
<img style="position: relative" src="https://i.postimg.cc/rswKtPg1/shot-Chart.png" width="100%" height="auto" />
</div>
<script>
displayMarker(0.5, 0.5, "https://i.postimg.cc/8CLJ8Wj6/makeIcon.png");
displayMarker(0.25, 0.25, "https://i.postimg.cc/mDRcTDH6/missIcon.png");

function displayMarker(x, y, image) {
var shotChartBox = document.getElementById("shotChartBox");

var offsetLeft = x * 100 - 2;
var offsetTop = y * 100 - 1;

var marker = document.createElement("IMG");
marker.src = image;
marker.style.width = "4%";
marker.style.position = "absolute";
marker.style.left = offsetLeft + "%";
marker.style.top = offsetTop + "%";
shotChartBox.appendChild(marker);
}
</script>
</body>

</html>

关于javascript - 将图像放在彼此之上时,CSS/JS 顶部和左侧会变形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57338365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com