如何在相对定位的元素内获取鼠标的坐标
How to get the coordinates of the mouse inside a relatively positioned element?
我想将元素$menu
放置在鼠标指针上(单击时(。 $menu
在里面$icon
里面有position: relative
。($menu
具有绝对位置。
$(document).ready(function() {
$("a").click(function(ev) {
var $icon = $(ev.currentTarget)
var $menu = $icon.next()
var thisPos = $icon.position()
var x = ev.clientX
var y = ev.clientY
$menu.css('top', y + 'px')
$menu.css('left', x + 'px')
});
})
nav > ul[_v-2e9e2f12] {
background: #3a3c3a;
margin: 0;
padding: 10px;
position: absolute;
top: 0;
left: 0;
height: 100%;
z-index: 9999;
box-shadow: 2px 0 1px rgba(0, 0, 0, 0.1);
}
nav > ul li[_v-2e9e2f12] {
display: block;
margin: 0 0 8px;
text-align: center;
position: relative;
-webkit-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
width: 48px;
height: 48px;
background: #ccc;
}
ul[_v-0078ee36] {
background: #3a3c3a;
position: absolute;
border-radius: 3px;
box-shadow: 0 2px 1px rgba(0, 0, 0, 0.1);
}
a[_v-2e9e2f12] {
display: block;
width: 48px;
height: 48px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
<ul _v-2e9e2f12="">
<li _v-2e9e2f12="">
<a _v-2e9e2f12="">
</a>
<ul _v-0078ee36="" _v-2e9e2f12="">
Hello!
</ul>
</li>
<li _v-2e9e2f12="">
<a _v-2e9e2f12="">
</a>
<ul _v-0078ee36="" _v-2e9e2f12="">
Hello!
</ul>
</li>
</ul>
</nav>
但是我得到了一个奇怪的行为:$menu
没有定位在鼠标的指针上,而是位于右侧和底部的几个像素上。对于第二个元素,情况更糟:右侧和底部有许多像素。
如何解决此问题,并使$menu
位于鼠标指针中?
这是JSFiddle。
使用 offsetX
和 offsetY
而不是 client
的
var x = ev.offsetX;
var y = ev.offsetY;
演示
相关文章:
- 当鼠标停止或改变方向时获取鼠标坐标
- Javascript如何在不使用画布的情况下获取鼠标位置
- 在火狐浏览器的画布上获取鼠标位置
- 画布:当存在*border*时,获取鼠标坐标
- 试图用jquery工具在覆盖层上获取鼠标悬停
- 如何在Fabric.js上获取鼠标坐标
- 如何在相对定位的元素内获取鼠标的坐标
- 在离子弹出窗口上传递值,但获取鼠标事件
- 如何在 Javascript 中正确获取鼠标位置
- 谷歌地图v3获取鼠标滚轮事件
- 在鼠标按下期间获取鼠标位置
- 如何在火狐中获取鼠标位置
- OpenLayers 3 在选择交互时获取鼠标坐标
- 在 Telerik ASP.Net UI 客户端中,如果我以内联方式附加客户端事件,如何获取鼠标事件对象
- 获取鼠标单击位置坐标
- 使用 d3 获取鼠标点击 svg 的坐标
- 离子和AngularJS - 拖动元素并移动它 - 如何获取鼠标位置
- 如何在Javascript/jQuery中获取鼠标移动事件的开始时间
- 如何在没有JQuery的情况下使用JavaScript正确获取鼠标坐标
- 获取鼠标按下和鼠标移动事件中的鼠标位置