如何在不使用事件的情况下获取元素的 pageX 和 pageY
How to get the pageX and pageY of an Element without using event
在不使用e.pageX和e.pageY的情况下,任何元素的定位都有。
检查这个小提琴
小提琴实际上是对我试图问的问题的糟糕尝试,但我认为视觉示例会更好。我想知道的是,是否可以通过使用引用来找到 DOM 上任何元素的 X 和 Y 坐标
document.getElementByID('elementID');
或者也许
document.getElementsByTagName('TagName');
编辑:虽然我在FIDDLE中使用了Jquery,但我想要一个仅使用JavaScript的可能解决方案。
document.getElementById("elementID").offsetTop;
document.getElementById("elementID").offsetLeft;
请参考 MDN。它们返回父元素的偏移量。如果您需要元素相对于整个主体的偏移量,它可能会变得更加棘手,因为您必须对链中每个元素的偏移量求和。
分别对于.getElementsByTagName
,因为 DOM 中的每个对象都有这些属性。
.getBoundingClientRect
也值得一看。
var clientRectangle = document.getElementById("elementID").getBoundingClientRect();
console.log(clientRectangle.top); //or left, right, bottom
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$("#something").click(function(e){
var parentOffset = $(this).parent().offset();
//or $(this).offset(); if you really just want the current element's offset
var relX = e.pageX - parentOffset.left;
var relY = e.pageY - parentOffset.top;
});
</script>
你可以在这里找到几乎所有的jquery内容:http://youmightnotneedjquery.com/
$(el).offset();
同:
var rect = el.getBoundingClientRect();
{
top: rect.top + document.body.scrollTop,
left: rect.left + document.body.scrollLeft
}
我认为offset()应该可以工作。
$(element).offset() //will get {top:.., left:....}
如果我理解正确:
UIEvent.PageX/PageY:相对于文档 (https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/pageX)
Elem.getBoundingClientRect:相对于视口。(https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect)
Window.pageXOffset/pageYOffset:文档当前滚动的像素数。(https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollX)
基于以下描述:
const PageX = (elem) => window.pageXOffset + elem.getBoundingClientRect().left
const PageY = (elem) => window.pageYOffset + elem.getBoundingClientRect().top
- ROR:如何在不重新加载浏览器的情况下从控制器获取参数
- 如何在不需要单击按钮的情况下获取选项的值
- 如何在没有回调的情况下获取有关元素的信息
- 在不使用PHP的情况下将表单输入值获取到Javascript中
- Haxe Javascript:在不使用Reflect的情况下按名称获取和设置属性
- 获取 HTML 5 音频控制文件位置并在不使用 id 选择器的情况下更新 src
- 在这种情况下,如何获取选定的表tr行
- 在不引用文档的情况下使用AngularJS获取元素
- 如何在不使用jQuery的情况下设置数组以获取单选按钮值
- 在不使用sort()的情况下获取HTML LI元素的副本
- 如何在没有注释的情况下从ACE编辑器中获取值
- 如何在不使用TableTool的情况下从jquery数据表中获取选定的行索引
- Javascript如何在不使用画布的情况下获取鼠标位置
- 如何在没有JQuery的情况下在Javascript中获取文件的内容
- 如何在不刷新页面的情况下从 PHP 中的 SQL Server 数据库获取数据
- Javascript:如何在不使用getElementById的情况下更改子元素的获取和更改属性
- Javascript在没有jQuery的情况下获取X父节点
- Rails/JS-在不刷新页面的情况下获取变量
- 无论如何都要获取文档.在不删除整个页面的情况下写入即可工作
- 在没有jsonp的情况下从另一个域获取数据(json格式)