如何在静态图片上用鼠标动态标注热点,类似于我鼠标点击图片上的某个区域,该区域就会有个小红点?
谢谢@谦龙 指正错误,的确没有考虑到当点击发生在红点上面的情况。
offsetX和offsetY是鼠标相对于目标事件的父元素的内边界在x,y坐标上的位置。
所以点击发生在红点上就为0了
那么是要采用@谦龙的办法,用e.pageX和e.pageY获取鼠标指针位置再减去父元素(图片)相对于文档的位置及半径,便可以得到圆心相对于父元素(图片)的位置了。
再用调整position:absoulute;
的top
和left
值并新建DOM加到图片层就好了。
写了个简单的例子,可以参考下
<style type="text/css">
.wrap{
width:300px;
height: 200px;
background: #ccc;
position: relative;
}
.ball{
width:20px;
height: 20px;
background: red;
border-radius: 50%;
position: absolute;
}
</style>
<body>
<div class="wrap"></div>
<script type="text/javascript">
$('.wrap').click(function(e){
var radius=10;//半径
var offset=$(this).offset();
var top=e.pageY-offset.top-radius+"px";
var left=e.pageX-offset.left-radius+"px";
$('.wrap').append('<div class="ball" style="top:'+top+';left:'+left+'"></div>')
})
</script>
</body>
直接绑定click的事件,事件里面根据当前event的坐标点添加DOM进去,DOM的display可以是absolute,然后left top根据event的坐标点设置,手机码子,只好说思路
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
5 回答1.9k 阅读
@PiLee 嗨 你好,当设置热点的时候,点击的位置是在className为ball的区域时候,是有问题的,如下图。

本质上是没有正确的获取问题中所需要的鼠标位置坐标
问题中所需要的鼠标位置应该是相对于热点图的位置,而
e.offsetX
,e.offsetY
则是鼠标相对于当前点击元素的位置关系。预览 因为图片链接的是百度下的,可能不能正常显示
html
sass
js
效果