gpt4 book ai didi

javascript - 在图像上留下点 onclick

转载 作者:搜寻专家 更新时间:2023-10-31 22:37:38 24 4
gpt4 key购买 nike

我想根据我点击的位置在我的网格图像上留下一个点。我已经了解了一般概念,但不幸的是,我的点总是比我点击的地方略高。我将如何调整它?

https://jsfiddle.net/dr0emvkr/

<!DOCTYPE html>
<html>

<head>
<meta charset=utf-8 />
<style>
#imageholder:hover {
cursor: crosshair;
}
</style>

<style>
article,
aside,
figure,
footer,
header,
hgroup,
menu,
nav,
section {
display: block;
}

#imageholder div {
display: none;
background-color: black;
position: absolute;
}

#imageholder {
position: relative;
display: inline-block;
overflow: hidden;
}

#vertical {
width: 2.5px;
height: 100%;
}

#horizontal {
width: 100%;
height: 2.5px;
}
</style>
</head>

<body>

<h1>Some Text</h1>
<h2>Some other text</h2>
<div id="imageholder">
<div id="horizontal"></div>
<div id="vertical"></div>
<img src="http://i.imgur.com/dRUn4ip.png">
</div>

<script class="jsbin" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>


</div>
<script type="text/javascript">
$('#imageholder img').on('click', null, [$('#horizontal'), $('#vertical')], function(e) {
e.data[1].css('left', e.offsetX == undefined ? e.originalEvent.layerX : e.offsetX);
e.data[0].css('top', e.offsetY == undefined ? e.originalEvent.layerY : e.offsetY);

$('#imageholder').click(function(event) {
var hor = event.offsetX + 4.15,
ver = event.offsetY + 4;

$(".marker").remove();
$("body").append(
$('<div class="marker" style="border-radius: 25px;"></div>').css({
position: 'absolute',
top: ver + 'px',
left: hor + 'px',
width: '10px',
height: '10px',
background: '#5b5e5f'

})
);
});

e.data[0].show();
e.data[1].show();

$(document).ready(function() {
$('#imageholder').mouseover(function() {
$(".marker").css("box-shadow", "0 0 0 3px rgba(0, 0, 0, 0.5)");
});
$('#imageholder').mouseout(function() {
$(".marker").css("box-shadow", "none");
});
});

});
</script>
</body>

</html>

最佳答案

问题是您在网格内使用 x 和 y 坐标,然后相对于页面定位。

解决方法是通过将标记附加到 imagegrid 元素来相对于网格定位。

我给 #horizo​​ntal#vertical 一个通用类,这样我就可以使 #imagegrid div 样式规则更具体。

然后我将 $('body').append 更改为 $('#imagegrid').append,最后我在两个维度上减去 8 个像素以将点居中。

更新的 JavaScript:

$("#imageholder").append(
$('<div class="marker" style="border-radius: 25px;"></div>').css({
position: 'absolute',
top: ver - 8 + 'px',
left: hor - 8 + 'px',
width: '10px',
height: '10px',
background: '#5b5e5f'

})
);

Full Fiddle(包括前面提到的 HTML/CSS 更改):https://jsfiddle.net/dr0emvkr/2/ .

关于javascript - 在图像上留下点 onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45133325/

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