首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >右击菜单显示位置不正确

右击菜单显示位置不正确
EN

Stack Overflow用户
提问于 2018-08-17 05:04:38
回答 2查看 1.2K关注 0票数 1

我试图创建一个编辑和删除选项的项目列表,我已使其显示当用户右键单击该列表项目。

代码语言:javascript
复制
document.addEventListener('contextmenu', function(e) {
  e.preventDefault();
  var x = e.offsetX;
  var y = e.offsetY;
  var d = document.getElementById("context-menu");
  d.style.display = "block";
  d.style.left = x + 'px';
  d.style.top = y + 'px';
  console.log(x, y);
}, false);
代码语言:javascript
复制
#context-menu {
  display: none;
  position: absolute;
  color: blue;
}

.listItems li {
  padding-bottom: 25px;
}
代码语言:javascript
复制
<ul class="listItems">
  <li>I am list one</li>
  <li>I am list two</li>
  <li>I am list three</li>
  <li>I am list four</li>
</ul>

<ul id="context-menu">
  <li> Edit </li>
  <li> Delete </li>
</ul>

jsfiddle链接是,https://jsfiddle.net/dmfvz5qw/1/

在这里,当我右键单击时,名为idcontext-menu不在鼠标箭头附近显示,它显示在单击列表的更多顶部。

我需要显示context-menu附近的点击位置,而不是任何其他位置。

请帮助我解决这个问题,我也需要结果在纯Javascript

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-17 05:14:38

你需要在这里使用clientX和clientY

如果您也想了解有关使用体滚动位置定位的更多信息,请参考以下链接https://stackoverflow.com/a/7790764/2630817

代码语言:javascript
复制
 document.addEventListener('contextmenu', function(e) {
	e.preventDefault();
 document.getElementById("context-menu").display = 'none';     
 var x = e.clientX ;
 var y = e.clientY;
 var d = document.getElementById("context-menu");
 d.style.display = "block";
 d.style.left = x+'px';
 d.style.top = y+'px';
 console.log(x,y);
}, false);
代码语言:javascript
复制
#context-menu {
  display: none;
  position: absolute;
  color: blue;
  padding: 0;
  width:50px;
}
代码语言:javascript
复制
<ul class="listItems">
  <li>I am list one</li>
  <li>I am list two</li>
  <li>I am list three</li>
  <li>I am list four</li>
</ul>
<ul id="context-menu">
  <li> Edit </li>
  <li> Delete </li>
</ul>

票数 1
EN

Stack Overflow用户

发布于 2018-08-17 05:10:06

请改用clientXclientY

代码语言:javascript
复制
var x = e.clientX;
var y = e.clientY;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51888673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档